我需要一个正则表达式来匹配一串数字,但是这个字符串可以包含一些特殊字符,例如,
.
,-
,+
。这需要能够检测文本中的电话号码并将其删除。
我使用了表达式
/^(.*)([\d\(\)\-\_\.\+\ ]{10,30})(.*)$/im
这样做,但这匹配仅包含10个空格的字符串。
如何编辑此表达式,以便确保它至少包含10位数?
答案 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
替换为[.-+]