[a-zA-Z]_*[a-zA-Z0-9]*
我的目标是匹配:
astring_something;
helloall90
但不是 :
Astring
_helloall
我的正则表达式保护我的标识符应该以小写字母开头。但它不适用于_
案例。传递字符串:
astring_something;
未被正确识别。它被确定为astring
并something
遗漏_
。
我在哪里犯错误?
我想你希望它以一个字母开头,后跟零个或多个字母、数字或下划线。如果是这样,您需要将下划线移动到第二组字符中。
改变:
[a-zA-Z]_*[a-zA-Z0-9]*
至:
[a-zA-Z][a-zA-Z0-9_]*
或者,如果它必须以小写字母开头:
[a-z][a-zA-Z0-9_]*
您当前仅匹配下划线前的单个字符。
[a-zA-Z]*_[a-zA-Z0-9]*
这是否是您真正想要的,是一个不同的问题。例如,带有多个下划线的东西呢?
尝试
^[a-z]+_*[a-zA-Z0-9]+
在哪里 ...
^[a-z]+
表示它必须以一个或多个小写字母开头,后跟 ...
_*
零个或多个 _ 字符,后跟 ...
[a-zA-Z0-9]*
零个或多个字母数字字符。
此模式将匹配 astring_something 和 helloall90 但不匹配 _helloall 和 Astring