cari

Rumah  >  Soal Jawab  >  teks badan

JavaScript: Adakah fungsi RegExp.escape wujud?

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粉381463780P粉381463780468 hari yang lalu843

membalas semua(2)saya akan balas

  • P粉662089521

    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!

    balas
    0
  • P粉734486718

    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.

    balas
    0
  • Batalbalas