3

我需要一个正则表达式来匹配一串数字,但是这个字符串可以包含一些特殊字符,例如, ., -, +。这是能够检测文本中的电话号码并将其删除所必需的。

我用了表达

/^(.*)([\d\(\)\-\_\.\+\ ]{10,30})(.*)$/im

这样做,但这也匹配仅包含 10 个空格的字符串。

如何编辑此表达式以确保它至少包含 10 位数字?

4

3 回答 3

4

你可以使用这样的模式:

([-()_.+ ]*\d[-()_.+ ]*){10,}

这将匹配由任意数量的特殊字符包围的数字,这些字符必须至少重复 10 次。

于 2013-10-01T16:27:50.393 回答
0

您可以使用积极的前瞻:

/^(?=.*?\d{10,})(.*?)([-\d()_.+\s]{10,30})(.*)$/im 
于 2013-10-01T16:28:30.520 回答
0

我过去用过这样的东西:

/1?[2-9]\D*\d\D*\d[^2-9]*[2-9](\D*\d[^02-9]*[02-9]|[^02-9]*[02-9]\D*\d)\D*\d\D*\d\D*\d\D*\d/

对于初学者来说可能很难解码,但它匹配 10 个(如果以 1 开头,则为 11 个)数字,符合大多数(我认为是全部)NANP 标准,并允许数字之间的任何文本

如果您只想允许., -. +, 那么你会\D[.-+]

于 2013-10-01T17:21:54.713 回答