1

我正在尝试创建一个自定义正则表达式来检测 O365 DLP 中的社会安全号码。条件是前三位数字不应从 000 或 666 或 150 开始,最后四位数字不应以 0000 结尾。因此我想出了下面的正则表达式,

(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4} - 这工作正常

需要解决方案:如果我想排除相同的模式,如果它以一个单词开头,例如Apple: 173-12-9878Content: 173-12-9878,我尝试将这个词添加到否定前瞻中,例如 (? !Apple: |Content: )(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4},但我无法完成这项工作。

请告知并建议是否有更好的方法来实现这一目标。谢谢。

4

1 回答 1

0

使用带有lookbehind的正则表达式:

\b(?<!Apple: |Content: )(?!0{2}|666|150)\d{3}-\d{2}-(?!0{4})\d{4}\b

证明和解释

(?<!Apple: |Content: )否定的后视将阻止 和 之后Apple:的匹配Content:

注意\b是单词边界,它将不允许匹配比您预期的更长的数字。

于 2020-01-11T13:35:22.347 回答