句子

时间:2016-09-12 10:44:50

标签: regex

请帮我正确表达像sp13-bse-018这样的字符串。

我有以下输入:

  • fasp
  • 开头
  • 后跟2位数字-
  • 然后bcsbtnbse
  • -和3位数字

我已经制作了这个正则表达式

^((\SP)|(sp)|(FA)|(fa))[1-9][0-9]{2}-{0,1}((BSE)|(bse)|(bcs)|(BCS)|(BTN)|(btn))-{0,1}[0-9]{3}$

但这不能正常工作,我也有很多搜索,但我无法得到它。

我将非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

看起来罪魁祸首是必须的非零数字[1-9],一旦你删除它,你的正则表达式就会起作用。

您可以通过删除不必要的组并使用不区分大小写的标志来缩短模式:

/^(sp|fa)[0-9]{2}-?(bse|bcs|btn)-?[0-9]{3}$/i

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (sp|fa) - spfa
  • [0-9]{2} - 两位ASCII数字
  • -? - 可选的(由于?)连字符
  • (bse|bcs|btn) - bsebcsbtn
  • -? - 一个可选的连字符
  • [0-9]{3} - 3个ASCII数字
  • $ - 字符串结束。

不区分大小写的标记还允许匹配SpsP,因此如果您不想要这种行为,请使用更多替换:(sp|fa) - &gt; (sp|SP|fa|FA)等等。