Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Memadankan Aksara Bukan ASCII dengan Sempadan Word dalam Regex JavaScript?

Bagaimana untuk Memadankan Aksara Bukan ASCII dengan Sempadan Word dalam Regex JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-10-27 04:46:29552semak imbas

How to Match Non-ASCII Characters with Word Boundaries in JavaScript Regex?

Memadankan Aksara Bukan ASCII dalam Regex JavaScript dengan Sempadan Word

Dalam JavaScript, objek RegExp dengan padanan sempadan perkataan (b) boleh ditemui had semasa mengendalikan aksara bukan ASCII seperti vokal Finland (ä, ö, dan å). Untuk memadankan aksara ini dengan tepat, kami perlu melaraskan pendekatan kami.

Pertimbangkan kod berikut:

<code class="javascript">var title = "this is simple string with finnish word tämä on ääkköstesti älkää ihmetelkö";
var searchterm = "äl";

if (new RegExp("\b" + searchterm, "gi").test(title)) {
  // This does not work for "äl"
}</code>

Kod ini cuba memadankan istilah "äl" dalam tajuk menggunakan sempadan b . Walau bagaimanapun, ia gagal kerana b memadankan sempadan perkataan berdasarkan julat 256 bait standard, tidak termasuk aksara bukan ASCII.

Penyelesaian: Kumpulan Tidak Menangkap dengan Sempadan Perkataan

Untuk menyelesaikan isu ini, kita boleh menggantikan b dengan kumpulan bukan menangkap yang secara eksplisit sepadan dengan permulaan rentetan atau ruang kosong:

<code class="javascript">if (new RegExp("(?:^|\s)" + searchterm, "gi").test(title)) {
  // Now it works for "äl"
}</code>

Pecahan:

  • (?:...): kumpulan tidak menangkap
  • ^: permulaan rentetan
  • s: ruang kosong
  • |: operator "atau"

Kod yang diubah suai ini akan sepadan dengan istilah "äl" dalam tajuk kerana ia mentakrifkan syarat sempadan permulaan perkataan yang lebih fleksibel yang merangkumi aksara bukan ASCII.

Atas ialah kandungan terperinci Bagaimana untuk Memadankan Aksara Bukan ASCII dengan Sempadan Word dalam Regex JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn