我有一个string.match条件一直工作,直到我意识到某些单词“个人(计算机)”具有特殊字符,如单词中的括号。例如,我的代码是抓住要比较的术语“个人(计算机)”并搜索数据以查找其中的任何实例,但是使用
string1.match(stringtarget,"ig"); //returns null
我是正则表达式的新手,所以我怎么能解决这个问题才能为特殊字符工作。
答案 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来转义特定于正则表达式的字符。