JavaScript: Adakah fungsi RegExp.escape wujud?
P粉381463780
P粉381463780 2023-11-16 17:41:27
0
2
775

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粉381463780
P粉381463780

membalas semua(2)
P粉662089521

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粉734486718

Fungsi yang dipautkan dalam jawapan lain tidak mencukupi. Ia tidak boleh lari ^$ (字符串的开头和结尾)或 -, ia digunakan dalam julat dalam kumpulan aksara.

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan