如果它包含字母或数字或单个下划线序列,我想匹配整个字符串,所以:
已接受:
- H_i_there
- _this_is_OK_
- _x_y_5_z
- abddd_cdxxx
不接受:
- s___2
- __s__t__2
- __x____x4
因此不允许使用多个连续的下划线。正则表达式如何查找这个?我的版本是:^[a-zA-Z0-9]+\_{0,1}[a-zA-Z0-9]+\_{0,1}$
,但是这个必须以某种方式递归才能工作,而且据我所知,正则表达式不支持如此复杂的功能。
最佳答案
您可以使用
^_?[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 .
关于正则表达式:任何单词和数字的组合,但带有一个下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102546/