如何从字符串中转义特殊的正则表达式符号

时间:2014-06-24 10:15:37

标签: regex extjs

我正在使用以下正则表达式匹配csv字符串中的值。

for example: csvString = "abc-d, xy%z, efgh, ijklm, nopq(1)rst, uvw@xy"
valueString = "xy%z";
var regExp = new RegExp('(^|, )' + valueString + '(,|$)');
csvString.replace(regExp, "")

以上regExp适用于csvString中的任何值,除了值'nopq(1)rst'。当valueString包含'()'括号时,它会失败,例如valueString =“nopq(1)rst”;.我希望正则表达式匹配valueString包含的任何内容。

如何从字符串

中转义特殊的正则表达符号,如'('')''['']''\'等

2 个答案:

答案 0 :(得分:3)

使用escapeRegex方法。它逃脱了任何特殊角色。

答案 1 :(得分:2)

您需要引用输入字符串以转义所有正则表达式特殊字符:

var regexpSpecialChars = /([\[\]\^\$\|\(\)\\\+\*\?\{\}\=\!])/g;
var regExp = new RegExp('(^|, )' + valueString.replace(regexpSpecialChars,'\\$1') + '(,|$)');

nopq(1)rst无法匹配的原因,因为( and )是用于分组的特殊正则表达式符号,有效地使您的正则表达式成为:

 (^|, )nopq1rst(,|$)