正则表达式评估,但忽略某些字符?

时间:2015-02-04 00:34:54

标签: javascript regex

我为我的正则表达式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

1 个答案:

答案 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