Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menggabungkan literal ungkapan biasa dalam JavaScript?

Bagaimana untuk menggabungkan literal ungkapan biasa dalam JavaScript?

WBOY
WBOYke hadapan
2023-09-01 18:45:031185semak imbas

Bagaimana untuk menggabungkan literal ungkapan biasa dalam JavaScript?

Ungkapan biasa literal ialah ungkapan biasa, urutan aksara yang sepadan dengan rentetan. Kadangkala, pembangun perlu menggabungkan ungkapan biasa. Walau bagaimanapun, ungkapan biasa juga merupakan jenis rentetan, tetapi kami tidak boleh menggabungkannya menggunakan pengendali "+" seperti rentetan.

Jadi kita perlu mendapatkan bendera daripada dua ungkapan biasa. Selepas itu kita perlu menapis semua bendera unik dan mencipta regex baharu selepas menggabungkan berbilang literal regex.

Tatabahasa

Pengguna boleh mengikut sintaks berikut untuk menggabungkan literal ungkapan biasa dalam JavaScript.

let allFlags = regex1.flags + regex2.flags;
let uniqueFlags = new Set(allFlags.split(''));
allFlags = [...uniqueFlags].join('');
let combined = new RegExp(regex1.source + regex2.source, allFlags);

Dalam sintaks di atas, pertama, kita mendapat dua bendera ungkapan biasa. Selepas itu, kami mencipta koleksi daripadanya untuk mendapatkan bendera unik dan menggabungkan dua literal regex.

Contoh 1

Dalam contoh di bawah, kami mentakrifkan dua literal ungkapan biasa. Kami menggunakan atribut "bendera" literal regex untuk mendapatkan bendera daripada kedua-dua regex. Selepas itu, kami mencipta satu set logo untuk mendapatkan logo yang unik. Seterusnya, kami menukar koleksi ke dalam tatasusunan.

Selepas itu, kami menggunakan atribut "sumber" regex untuk mendapatkan literal regex dan menggunakan operator "+" untuk menggabungkan dua literal regex. Selain itu, kami menggunakan semua bendera unik yang terkandung dalam kedua-dua literal regex semasa mencipta literal regex gabungan.

<html>
<body>
   <h2>Concatenating the <i> Regex literals </i> in JavaScript</h2>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');
      
      // concatenate two regex literals
      let regex1 = /hello/i;
      let regex2 = /world/g;
      let allFlags = regex1.flags + regex2.flags;
      let uniqueFlags = new Set(allFlags.split(''));
      allFlags = [...uniqueFlags].join('');
      let combined = new RegExp(regex1.source + regex2.source, allFlags);
      output.innerHTML += "The first regex is: " + regex1 + "<br>";
      output.innerHTML += "The second regex is: " + regex2 + "<br>";
      output.innerHTML += "The combined regex is: " + combined + "<br>";
   </script>
</body>
</html>

Contoh 2

Dalam contoh di bawah, pengguna perlu memasukkan ungkapan biasa literal dan bendera yang berkaitan. Selain itu, pengguna perlu mengisi input rentetan untuk ujian menggunakan ungkapan biasa gabungan.

Setiap kali pengguna menekan butang, ia melaksanakan fungsi combineRegex(). Di dalamnya kami menggabungkan dua ungkapan biasa input dengan bendera yang sesuai. Selepas itu, kami menggunakan kaedah test() untuk menyemak sama ada rentetan itu sepadan dengan ungkapan biasa gabungan dan mengembalikan nilai boolean.

<html>
<body>
   <h2>Concatenating the <i> Regex literals </i> in JavaScript</h2>
   <input type = "text" placeholder = "regex1" id = "regex1">
   <input type = "text" placeholder = "flags" id = "flag1">
   <br> <br>
   <input type = "text" placeholder = "regex2" id = "regex2">
   <input type = "text" placeholder = "flags" id = "flag2">
   <br> <br>
   <input type = "text" placeholder = "string to test regex" id = "str">
   <br> <br>
   <div id = "output"> </div>
   <button id="btn" onclick="combineRegex()"> Combine and Match Regex </button>
   <script>
      let output = document.getElementById('output');
      function combineRegex() {
         let regex1 = new RegExp(document.getElementById('regex1').value, document.getElementById('flag1').value);
         let regex2 = new RegExp(document.getElementById('regex2').value, document.getElementById('flag2').value);
         let allFlags = regex1.flags + regex2.flags;
         let uniqueFlags = new Set(allFlags.split(''));
         allFlags = [...uniqueFlags].join('');
         let combined = new RegExp(regex1.source + regex2.source, allFlags);
         let str = document.getElementById('str').value;
         let result = combined.test(str);
         output.innerHTML += "The combined regex " + combined + " matches the string " + str + " : " + result;
      }
   </script>
</body>
</html>

Contoh 3

Dalam contoh di bawah, kami mula-mula menulis ungkapan biasa dalam bentuk rentetan biasa. Selepas itu, kami menggabungkan dua rentetan dan mencipta ungkapan biasa baharu daripada rentetan gabungan menggunakan pembina RegExp().

Selain itu, kita boleh melepasi bendera yang diperlukan sebagai parameter kedua.

<html>
<body>
   <h2>Concatenating the <i> Regex literals </i> in JavaScript</h2>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');
      let part1 = "Hello";
      let part2 = " World";
      var pattern = new RegExp(part1 + part2, "g");
      output.innerHTML = "The combined regex is: " + pattern + "<br>";
   </script>
</body>
</html>

Kesimpulan

Pengguna belajar untuk menggabungkan literal ungkapan biasa dalam JavaScript. Dalam contoh pertama, kami menggabungkan literal ungkapan biasa selepas menciptanya. Dalam contoh sebelumnya, kami mula-mula menggabungkan rentetan dan mencipta ungkapan biasa baharu menggunakan rentetan gabungan. Walau bagaimanapun, contoh terakhir tidak menggunakan ungkapan biasa literal kerana ia menggunakan pembina untuk mencipta ungkapan biasa.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan literal ungkapan biasa dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam