正则表达式前瞻字符限制?

Regex Lookahead character restrictions?

我正在尝试学习一些有关 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})

([1-9]{4})
(?!([\w&/%"-]))

为了屏蔽 SSN,这个似乎有效 ^(?!000)(?!666)(?!9)\d{3}([- ]?)(?!00)\d{2}(?!0000)\d{4}$ 但我希望它不要屏蔽前面有 "order" 或 "routing number" 字样的任何 9 位数字。

很多正则表达式引擎要求lookbehind是固定长度的,并且会拒绝执行可变长度的lookbehind;如果是这种情况,您应该会看到一条警告。如果您没有看到警告,问题很可能是您的正则表达式根本没有按照您认为的方式工作。

但是,使用回顾通常可以简单地匹配您希望算作回顾的文本,然后 discard/ignore 在您检查捕获或匹配对象时匹配它。