如果它包含字母或数字或单个下划线序列,我想匹配整个字符串,所以:
接受:
不接受:
因此不允许多个连续的下划线。正则表达式如何看待这个?我的版本是:^[a-zA-Z0-9]+\_{0,1}[a-zA-Z0-9]+\_{0,1}$
,但这必须是递归的,不知何故,为了它起作用,AFAIK,正则表达式不支持这种复杂的功能。
答案 0 :(得分:2)
您可以使用
^_?[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*_?$
请参阅regex demo
<强>详情:
^
- 字符串开头_?
- 可选的_
[a-zA-Z0-9]+
- 1个字母数字字符(?:_[a-zA-Z0-9]+)*
- 0+序列:
_
- 1下划线[a-zA-Z0-9]+
- 1个字母数字字符_?
- 可选的_
$
- 字符串结尾效率较低但较短的模式:
^(?:_?[a-zA-Z0-9]+)*_?$
请参阅this demo。
答案 1 :(得分:1)