我在努力寻找如何使用正则表达式来匹配一系列数字的答案,但不包括一个数
即:我正在寻找的任何比赛 - AM19 / 0601 - AM19 / 0805(但不是AM19 / 0803)
我用这对看,如果我有任何的比赛:
AM19 / 6XX AM19 / 7XX AM19 / 8XX
/AM19\/0[678]
如:
if (preg_match('/AM19\/0[678]/', $perm) === 0) {
//do whatever
}
但如何我“排除”的AM19 / 803选项,有来无回/或包含在匹配/搜索?
你可以在你的正则表达式使用负先行断言:
~\bAM19/0(?!803)[678]\d{2}\b~
在这里,我们有匹配(?!803)
如果19/0
输入803
之后出现,这将失败赛后负前瞻19/0
。
另外请注意,通过使用备用正则表达式的分隔符~
你能避免在您正则表达式逃逸/
。
你可以使用
\bAM19/(?!0803)\d+
甚至
(?:AM19/0803)(*SKIP)(*FAIL)|AM19/\d+
后者可能会有点洁癖,看见a demo on regex101.com。
你并不需要负超前或类似的东西。方括号可以接受多个范围(如在[a-zA-Z]
,例如)。你可以不理会使用多个数字范围不必要的号码。
解决方案:AM19\/0[6-8][0-9][0-24-9]
Regex101:https://regex101.com/r/6Zc6br/3