Trying to apply regex for not allowing a string with double underscores
[a-z][a-z0-9_-]+[^__]
but its failing in many cases like:
ab_ doesn't matches whereas it should
ab__c_ matches whereas it shouldn't.
[^__]
matches one character that is not underscore. To assert that your string doesn't have two consecutive underscores, you could use a negative lookahead:
^(?!.*__.*)[a-z][a-z0-9_-]+$
The lookaround asserts that your string does not have two consecutive underscores (?!.*__.*)
, and then matches your required string if the assertion does not fail -- [a-z][a-z0-9_-]+
.
the [^]
syntax defines a set of characters so that it matches a character not present in this set
if you want to match two characters that are not underscores you can use [^_]{2}
but if you really want to check if a string has two underscores, you better search for two underscores and negate the result
for example in perl: "ab_" !~ /__/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With