正则表达式不允许双下划线

cho*_*hoc 5 regex

尝试应用正则表达式,不允许带有双下划线的字符串

 [a-z][a-z0-9_-]+[^__]
Run Code Online (Sandbox Code Playgroud)

但它在很多情况下都失败了:

ab_      doesn't matches whereas it should
ab__c_   matches whereas it shouldn't.
Run Code Online (Sandbox Code Playgroud)

Joã*_*lva 6

[^__]匹配一个不是下划线的字符.要声明您的字符串没有两个连续的下划线,您可以使用否定前瞻:

^(?!.*__.*)[a-z][a-z0-9_-]+$
Run Code Online (Sandbox Code Playgroud)

外观断言你的字符串没有两个连续的下划线(?!.*__.*),然后如果断言没有失败则匹配你需要的字符串 - [a-z][a-z0-9_-]+.