Regex not to allow double underscores

后端 未结 3 826
你的背包
你的背包 2021-01-19 01:58

Trying to apply regex for not allowing a string with double underscores

 [a-z][a-z0-9_-]+[^__]

but its failing in many cases like:

相关标签:
3条回答
  • 2021-01-19 02:02

    [^__] 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_-]+.

    0 讨论(0)
  • 2021-01-19 02:21

    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_" !~ /__/

    0 讨论(0)
  • 2021-01-19 02:26

    in perl it would be:

        if($a =~ /__/){
        } else{
        }
    

    which means if string a contains "__" do something, if not do something else. Of course there is many ways how to beutify such code

    0 讨论(0)
提交回复
热议问题