正则表达式:任何单词和数字的组合,但带有一个下划线

标签 regex

如果它包含字母或数字或单个下划线序列,我想匹配整个字符串,所以:

已接受:

  • 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/

相关文章:

javascript - 除了字符 e、n、p 之外,是否有更简洁的正则表达式来匹配 a-z?

在 R 中使用 gsub 替换以模式开头的整个单词

RegEx - 如何选择第二个逗号及其后的所有内容

从列名中删除部分字符串

regex - 正则表达式查找路径中最后一个文件夹名称

regex - perl 就地搜索和替换,但仅在匹配第二个模式的行上

regex - 如何使用正则表达式+替换将CSS样式的javascript字符串中的rgb值更改为十六进制值

javascript - 如何在JS中使用正则表达式

python - 如何删除非字母数字字符,同时保留 unicode 编码字符和撇号 (\' )?

regex - 使用 htaccess 将 Paypal 回调重新格式化为自定义 URL 格式