Rumah > Soal Jawab > teks badan
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.
P粉6620895212023-11-17 17:07:41
Untuk sesiapa sahaja yang menggunakan Lodash, Setakat v3.0.0 fungsi _.escapeRegExp terbina dalam:
_.escapeRegExp('[lodash](https://lodash.com/)'); // → '\[lodash\]\(https:\/\/lodash\.com\/\)'
Dan jika anda tidak mahu memerlukan perpustakaan Lodash penuh, anda mungkin mahu Itu sahaja!
P粉7344867182023-11-17 14:43:25
Fungsi yang dipautkan dalam jawapan lain tidak mencukupi. Ia tidak boleh lari ^
或 $
(字符串的开头和结尾)或 -
, ia digunakan dalam julat dalam kumpulan aksara. < /p>
Gunakan ciri ini:
function escapeRegex(string) { return string.replace(/[/\-\^$*+?.()|[\]{}]/g, '\$&'); }
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.