仅在找到x或更多内容后才进行正则表达式匹配

时间:2012-02-15 20:23:23

标签: regex

我有社会安全号码的正则表达式。我有一个新的要求,即要求正则表达式只匹配"当确定5个或更多时。我尝试了几种排列,但我一直都无法解决这个问题。

我的正则表达式:     ((?!000|666|9\d{2})([0-8]\d{2}[- ]\d{2}[- ]\d{4}))

我试过了     ((?!000|666|9\d{2})([0-8]\d{2}[- ]\d{2}[- ]\d{4})){5,}

哪个不起作用。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

看起来您的模式不允许SSN之间的任何分隔符。当我测试它时(使用寻找两次重复的版本),它适用于333 33 3333444 44 4444之类的输入,但如果SSN之间有换行符/制表符/空格/等,它就不起作用。您可能需要将允许的分隔符列表添加到模式的末尾(可能后跟?*字符,因为列表中的最后一个SSN可能不会以一个结束。

例如,如果您的SSN之间有逗号和可能的空格,则您的模式的修订版本可能

((?!000|666|9\d{2})([0-8]\d{2}[- ]\d{2}[- ]\d{4})[, ]*){5,}