请帮我正确表达像sp13-bse-018
这样的字符串。
我有以下输入:
fa
或sp
-
bcs
,btn
或bse
-
和3位数字我已经制作了这个正则表达式
^((\SP)|(sp)|(FA)|(fa))[1-9][0-9]{2}-{0,1}((BSE)|(bse)|(bcs)|(BCS)|(BTN)|(btn))-{0,1}[0-9]{3}$
但这不能正常工作,我也有很多搜索,但我无法得到它。
我将非常感谢你的帮助。
答案 0 :(得分:2)
看起来罪魁祸首是必须的非零数字[1-9]
,一旦你删除它,你的正则表达式就会起作用。
您可以通过删除不必要的组并使用不区分大小写的标志来缩短模式:
/^(sp|fa)[0-9]{2}-?(bse|bcs|btn)-?[0-9]{3}$/i
请参阅regex demo
<强>详情:
^
- 字符串开头(sp|fa)
- sp
或fa
[0-9]{2}
- 两位ASCII数字-?
- 可选的(由于?
)连字符(bse|bcs|btn)
- bse
或bcs
或btn
-?
- 一个可选的连字符[0-9]{3}
- 3个ASCII数字$
- 字符串结束。不区分大小写的标记还允许匹配Sp
,sP
,因此如果您不想要这种行为,请使用更多替换:(sp|fa)
- &gt; (sp|SP|fa|FA)
等等。