尝试应用正则表达式以不允许带有双下划线的字符串
[a-z][a-z0-9_-]+[^__]
但它在许多情况下都失败了,例如:
ab_ doesn't matches whereas it should
ab__c_ matches whereas it shouldn't.
尝试应用正则表达式以不允许带有双下划线的字符串
[a-z][a-z0-9_-]+[^__]
但它在许多情况下都失败了,例如:
ab_ doesn't matches whereas it should
ab__c_ matches whereas it shouldn't.
[^__]
匹配一个非下划线字符。要断言您的字符串没有两个连续的下划线,您可以使用负前瞻:
^(?!.*__.*)[a-z][a-z0-9_-]+$
环视断言您的字符串没有两个连续的下划线(?!.*__.*)
,如果断言没有失败,则匹配您所需的字符串- [a-z][a-z0-9_-]+
。
[^]
语法定义了一组字符,以便匹配该组中不存在的字符
如果你想匹配两个不是下划线的字符,你可以使用[^_]{2}
但是如果你真的想检查一个字符串是否有两个下划线,你最好搜索两个下划线并否定结果
例如在 perl 中:"ab_" !~ /__/
在 perl 中它将是:
if($a =~ /__/){
} else{
}
这意味着如果字符串 a 包含 "__" 做某事,如果不做其他事情。当然有很多方法可以美化这样的代码