RegEx与特殊字符匹配

时间:2011-03-01 14:35:46

标签: javascript regex

我有一个string.match条件一直工作,直到我意识到某些单词“个人(计算机)”具有特殊字符,如单词中的括号。例如,我的代码是抓住要比较的术语“个人(计算机)”并搜索数据以查找其中的任何实例,但是使用

string1.match(stringtarget,"ig"); //returns null 

我是正则表达式的新手,所以我怎么能解决这个问题才能为特殊字符工作。

2 个答案:

答案 0 :(得分:3)

如果您不需要正则表达式功能,可以使用indexOf

if (string1.toLowerCase().indexOf(stringtarget.toLowerCase()) >= 0) {
    // It's in there
}

否则(我猜你正在使用match是有原因的!),你必须预先处理stringtarget以逃避任何特殊字符。

例如,这是我在最近的一个项目中使用的一个功能,它的功能与类似的PHP函数有关:

if (!RegExp.escape) {
    (function() {
        // This is drawn from http://phpjs.org/functions/preg_quote:491
        RegExp.escape = RegExp_escape;
        function RegExp_escape(str) {
            return String(str).replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, '\\$1');
        }
    })();
}

所以:

var match = string1.match(RegExp.escape(stringtarget),"ig");

答案 1 :(得分:0)

您可以使用preg_quote javascript port来转义特定于正则表达式的字符。