正则表达式Lookahead字符限制?

时间:2015-06-29 15:20:15

标签: regex regex-lookarounds boost-regex

我正在尝试学习有关正则表达式的一些内容。我开始尝试隐藏一些九位数的匹配,例如SSN,但让所有九位数字都有“order”或“routing number”,但似乎只有相同的字符串长度会起作用。有没有办法解决这个问题而不创造多条线?谢谢!

(?<!(Order:\s|Routing\snumber:\s))
(?!000|666)([0-6]\d\d|7[01256]\d|73[0123]|77[012])
([-]?)
([1-9]{2})
\3
([1-9]{4})
(?!([\w&/%"-]))

为了阻止SSN,这个似乎有效     ^(?!000)(?!666)(?!9)\d{3}([- ]?)(?!00)\d{2}\1(?!0000)\d{4}$ 但我希望它不会阻止任何9位数字,在它们前面加上“order”或“routing number”。

1 个答案:

答案 0 :(得分:1)

许多正则表达式引擎要求lookbehind具有固定长度,并且拒绝执行可变长度的lookbehind;如果您的情况属实,您应该看到警告。如果您没有看到警告,那么问题是您的正则表达式根本无法按照您的想法进行。

然而,通常情况下,lookbehinds可以简单地匹配您希望算作后视的文本,然后在您检查捕获或匹配对象时丢弃/忽略它。