首页 > 解决方案 > RegEx:不包括特定数字的数字范围

问题描述

我正在努力寻找有关如何使用正则表达式匹配一系列数字但不包括一个数字的答案

即:我正在寻找任何匹配 - 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 选项以不返回/或包含在匹配/搜索中?

标签: phpregexpreg-match

解决方案


您可以在您的正则表达式中使用否定的前瞻断言:

~\bAM19/0(?!803)[678]\d{2}\b~

正则表达式演示

(?!803)在这里,我们在匹配后有一个否定的前瞻,如果在输入后立即出现19/0,则匹配失败。80319/0

另请注意,通过使用备用正则表达式分隔符~,您可以避免/在正则表达式中转义。


推荐阅读