关于javascript:regex评估,但忽略某些字符?

Regex to evaluate, but ignore certain characters?

我为我的regex noobiness道歉,但我不知道如何创建忽略某些字符的regex。

1
2
3
var foo ="123",
    bar ="1 (234) a12-34a1",
    result = bar.replace(new RegExp(foo,"ig"),"bcd");

如果regex被忽略[s()-],则结果应为

1
"b (cd4) abc-d4a1"

有办法吗?

更新:

这就是问题的背景:我必须接受一串数字,在电话号码中找到它(以各种方式显示),然后在电话号码中突出显示它。

通常,我只做一个简单的替换,例如:

1
2
3
var foo ="foo",
    str ="foobar",
    newStr = str.replace(new RegExp(foo,"ig"),"<span class='highlighted'>" + foo +"</span>");

但格式设置阻碍了这一点。

实例:

searchstr->预期输出

123->1(234)567-8901

345~123-467

56789->123(45)678-9012


这样地?

1
2
3
4
5
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