2016-05-16 68 views
-1

我有一个电话号码为phone= 1234567890。我可以使用正则表达式格式化为替换模式忽略模式中的字符

phone.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3") 

鉴于串(123)426-7890,如何能匹配的子串忽略的空间,连字符和斗提字?例如,我想搜索字符串342或67.如何编写正则表达式来查找这些子字符串,忽略发生在这些子字符串中的字符之间的字符)-

+1

应用正则表达式之前标准化数据 –

+1

[ *有些人在遇到问题时会想:“我知道,我会用正则表达式。”现在他们有两个问题。*](http://regex.info/blog/2006-09-15/247) - [Jamie Zawinski](https://en.wikipedia.org/wiki/Jamie_Zawinski) –

+0

如果你已经有'电话= 1234567890'那么你为什么要搜索格式化的字符串? – anubhava

回答

0

你可以简单地删除非数字与搜索前\D+正则表达式(1个或多个非数字符号):

var s = "(123) 426-7890"; 
 
if (s.replace(/\D+/g, "").indexOf("342") > -1) { 
 
    alert("Found 342"); 
 
}