我正在使用以下正则表达式匹配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包含的任何内容。
如何从字符串
中转义特殊的正则表达符号,如'('')''['']''\'等答案 0 :(得分:3)
使用escapeRegex
方法。它逃脱了任何特殊角色。
答案 1 :(得分:2)
您需要引用输入字符串以转义所有正则表达式特殊字符:
var regexpSpecialChars = /([\[\]\^\$\|\(\)\\\+\*\?\{\}\=\!])/g;
var regExp = new RegExp('(^|, )' + valueString.replace(regexpSpecialChars,'\\$1') + '(,|$)');
nopq(1)rst
无法匹配的原因,因为( and )
是用于分组的特殊正则表达式符号,有效地使您的正则表达式成为:
(^|, )nopq1rst(,|$)