Reputation: 111
I need regular expression which could match a string like that
_test
123test
test
test_123
test-123
123.a
I created this regular expression:
/^[_0-9a-z][_.\-a-z0-9]*$/
However, I want to exclude a string if it only contains numbers.
How can I fix it?
Upvotes: 2
Views: 98
Reputation: 627607
To avoid matching a digit-only string, add a negative lookahead:
^(?![0-9]+$)[_0-9a-z][_.\-a-z0-9]*$
^^^^^^^^^^
The (?![0-9]+$)
lookahead is triggered only once at the beginning of the string and will try to match one or more digits up to the end of string. If they are found, a match will be failed (no match will be returned) as the lookahead is negative.
Upvotes: 3