我为我的正则表达式noobiness道歉,但我无法弄清楚如何创建一个会忽略某些字符的正则表达式。
var foo = "123",
bar = "1 (234) a12-34a1",
result = bar.replace(new RegExp(foo,"ig"),"bcd");
如果正则表达式忽略[\ s() - ],结果应为
"b (cd4) abc-d4a1"
有办法做到这一点吗?
更新:
以下是问题的背景:我必须接受一串数字,在电话号码中找到它(以各种方式显示),然后在电话号码中突出显示。
通常,我只是做一个简单的替换,例如:
var foo = "foo",
str = "foobar",
newStr = str.replace(new RegExp(foo,"ig"),"<span class='highlighted'>" + foo + "</span>");
但格式化会妨碍这种做法。
示例:
searchStr - &gt;预期产出
123 - &gt; 1(23 4)567-8901
345 - &gt; 12的 3-45 67
56789 - &gt; 123(4 5)678-9 012
答案 0 :(得分:2)
喜欢这个吗?
var foo = "1([\\s()-]*)2([\\s()-]*)3",
bar = "1 (234) a12-34a1",
result = bar.replace(new RegExp(foo,"ig"), "b$1c$2d");
result; //b (cd4) abc-d4a1