正则表达式匹配包含特殊字符的数字字符串

时间:2013-10-01 16:24:59

标签: regex

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

我使用了表达式

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

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

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

3 个答案:

答案 0 :(得分:3)

你可以使用这样的模式:

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

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

答案 1 :(得分:0)

你可以使用积极的前瞻:

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

答案 2 :(得分: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个(或者11个,如果它们以1开头)数字,符合大多数(我认为所有)NANP标准,并允许任何文本之间的任何文本数字

如果您只想允许.-+,然后您将每个\D替换为[.-+]