-2
使用例として、この文字列2つの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"
はぁがそうであるように、これら2つのワーク?検索で置き換えられるよりもエスケープが必要なのはなぜですか?
また、正規表現として解釈される代わりに、文字列入力でリテラル検索を行うべきではありませんか?理論的には、エスケープ文字を使う必要はありません。
エラーメッセージにすべてが説明されています。 's.search'は引数を正規表現パターンとして扱います(特殊文字はリテラルのバックスラッシュでエスケープする必要があります)。' s.replace'は入力を文字列として扱います。 –
_ "String.prototype.search(regexp):regexpが[[Class]]プロパティが" RegExp "のオブジェクトでない場合は、 の式new RegExp(regexp)の結果に置き換えられます。 ://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf – CBroe