正则表达式匹配字母数字字符,仅在中间加下划线

时间:2019-11-01 18:25:09

标签: regex

现在,我有一个正则表达式,如下所示:

6,128,202,407 sha256 hash database

它与当前所有字母数字字符匹配。我希望它能够与具有中间下划线的表达式匹配,但如果有连续的下划线,前导下划线或尾随下划线,则不能匹配。 即

  • 2^256(不好)
  • [A-Za-z][A-Za-z0-9]* (不好)
  • test__(不好)
  • _test(确定)

正则表达式是什么样子?

2 个答案:

答案 0 :(得分:1)

尝试一下

 ^[a-zA-Z0-9]+_[a-zA-Z0-9]+$

使_为可选

^[a-zA-Z0-9]+_{0,1}[a-zA-Z0-9]+$

允许多个_

^(?:[a-zA-Z0-9]+_{0,1})+[a-zA-Z0-9]+$

答案 1 :(得分:1)

[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*

应符合要求。这将使用您已经拥有的内容,并添加选项,如果后面至少有一个或多个[A-Za-z0-9]字符,则使用下划线。

regex diagram

您可能希望将^$的解决方案锚定到字符串的开头和结尾,但这取决于您的用例。