Lely22
Lely22

Reputation: 19

Allow only one number in grep Regex

I have to accept the strings that only have a single number, it doesn't matter the content of the string, it just needs to be a single number.

I was trying something like this:

echo "exaaaamplee1" | grep '[0-9]\{1\}'

This string is accepted, but this string also is accepted:

echo "exaaaamplee11" | grep '[0-9]\{1\}'

Upvotes: 0

Views: 1186

Answers (2)

Shawn
Shawn

Reputation: 52579

If you want to match a string with only one digit character using grep, it's

echo whatever1 | grep '^[^[:digit:]]*[[:digit:]][^[:digit:]]*$'

Start of line followed by any number of non-digits, one digit, and then any number of non-digits until the end of the line.

Upvotes: 2

Timothy Egenton
Timothy Egenton

Reputation: 108

You probably want to use something like [^0-9]. This represents any character except a digit 0-9, and you can use [0-9] (or \d) for the one digit that is allowed.

Something like ^[^0-9]*[0-9][^0-9]*$ should match any string with exactly one digit. (^ being the start and $ the end of the string)

Upvotes: 3

Related Questions