Verwenden Sie diese Zeichenfolge als BeispielWarum unterscheidet sich die Escape-Syntax zwischen zwei Javascript-Funktionen: Suche vs ersetzen?
s = "a(b"
Diese beiden arbeiten als
erwartets.search("\\(")
1
s.replace("\(", "")
"ab"
Aber diese nicht
s.search("\(")
Uncaught SyntaxError: Invalid regular expression: /(/: Unterminated group
s.replace("\\(", "")
"a(b"
Huh? Warum benötigt die Suche eine weitere Escape-Funktion als die Ersetzung?
Auch sollte String-Eingabe keine literale Suche geben, anstatt als Regexp interpretiert werden? Theoretisch sollte ich keine Escape-Zeichen verwenden müssen.
Die Fehlermeldung erklärt alles. 's.search' behandelt das Argument als ein Regex-Muster (also müssen die speziellen Zeichen mit einem umgekehrten Schrägstrich versehen werden), und' s.replace' behandelt die Eingabe als eine Zeichenkette. –
_ "String.prototype.search (regexp): Wenn regexp kein Objekt ist, dessen Eigenschaft [[Class]]" RegExp "ist, wird es durch das Ergebnis des Ausdrucks new RegExp (regexp) ersetzt." _ - http : //www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf – CBroe