Используйте эту строку в качестве примераПочему синтаксис перехода отличается между двумя функциями Javascript: search vs replace?
s = "a(b"
Эти две работы, как ожидается,
s.search("\\(")
1
s.replace("\(", "")
"ab"
Но они не
s.search("\(")
Uncaught SyntaxError: Invalid regular expression: /(/: Unterminated group
s.replace("\\(", "")
"a(b"
да? Почему для поиска требуется еще один побег, чем замена?
Кроме того, не следует вводить строковый ввод, чтобы получить литерал, вместо того, чтобы интерпретировать его как регулярное выражение? Теоретически мне не нужно было использовать escape-символы.
Сообщение об ошибке объясняет все. 's.search' рассматривает аргумент как шаблон регулярного выражения (поэтому специальные символы должны быть экранированы с буквальной обратной косой чертой), а' s.replace' обрабатывает ввод как строку. –
_ "String.prototype.search (regexp): Если regexp не является объектом, чье свойство [[Class]] является" RegExp ", оно заменяется результатом выражения нового RegExp (regexp)." _ - http : //www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf – CBroe