我正在尝试学习有关正则表达式的一些内容。我开始尝试隐藏一些九位数的匹配,例如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”。
答案 0 :(得分:1)
许多正则表达式引擎要求lookbehind具有固定长度,并且拒绝执行可变长度的lookbehind;如果您的情况属实,您应该看到警告。如果您没有看到警告,那么问题是您的正则表达式根本无法按照您的想法进行。
然而,通常情况下,lookbehinds可以简单地匹配您希望算作后视的文本,然后在您检查捕获或匹配对象时丢弃/忽略它。