Saya hanya mahu mencipta ungkapan biasa dengan sebarang rentetan yang mungkin.
var usersString = "Hello?!*`~World()[]"; var expression = new RegExp(RegExp.escape(usersString)) var matches = "Hello".match(expression);
Adakah kaedah terbina dalam? Jika tidak, apa yang orang gunakan? Ruby ada RegExp.escape
. Rasa macam tak perlu tulis sendiri, mesti ada standard.
Untuk sesiapa sahaja yang menggunakan Lodash, Setakat v3.0.0 fungsi _.escapeRegExp terbina dalam:
Dan jika anda tidak mahu memerlukan perpustakaan Lodash penuh, anda mungkin mahu Itu sahaja!
Fungsi yang dipautkan dalam jawapan lain tidak mencukupi. Ia tidak boleh lari
^
或$
(字符串的开头和结尾)或-
, ia digunakan dalam julat dalam kumpulan aksara.Gunakan ciri ini:
Walaupun ia mungkin kelihatan tidak perlu pada pandangan pertama, melarikan diri
-
(以及^
) menjadikan fungsi ini juga sesuai untuk watak melarikan diri untuk dimasukkan ke dalam kelas watak sebagai badan ekspresi biasa.Escape
/
Menjadikan fungsi ini sesuai untuk melepaskan aksara untuk digunakan dalam literal ungkapan biasa JavaScript untuk penilaian kemudian.Memandangkan tidak ada salahnya untuk melarikan diri daripada mana-mana daripadanya, masuk akal untuk melarikan diri untuk meliputi julat kes penggunaan yang lebih luas.
Ya, mengecewakan, ini bukan sebahagian daripada JavaScript standard.