Heim  >  Artikel  >  Web-Frontend  >  Wie verkette ich reguläre Ausdrucksliterale in JavaScript?

Wie verkette ich reguläre Ausdrucksliterale in JavaScript?

WBOY
WBOYnach vorne
2023-09-01 18:45:031185Durchsuche

Wie verkette ich reguläre Ausdrucksliterale in JavaScript?

Ein reguläres Ausdrucksliteral ist ein regulärer Ausdruck, eine Folge von Zeichen, die mit einer Zeichenfolge übereinstimmt. Manchmal müssen Entwickler reguläre Ausdrücke kombinieren. Allerdings sind auch reguläre Ausdrücke eine Art String, aber wir können sie nicht wie Strings mit dem „+“-Operator verketten.

Also müssen wir zuerst die Flags von den beiden regulären Ausdrücken erhalten. Danach müssen wir alle eindeutigen Flags filtern und nach der Kombination mehrerer Regex-Literale einen neuen Regex erstellen.

Grammatik

Benutzer können der folgenden Syntax folgen, um reguläre Ausdrucksliterale in JavaScript zu verketten.

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

In der obigen Syntax erhalten wir zunächst die beiden Flags für reguläre Ausdrücke. Danach erstellen wir daraus eine Sammlung, um die eindeutigen Flags zu erhalten und die beiden Regex-Literale zu kombinieren.

Beispiel 1

Im folgenden Beispiel definieren wir zwei reguläre Ausdrucksliterale. Wir verwenden das „flags“-Attribut des Regex-Literals, um die Flags von beiden Regexes abzurufen. Anschließend haben wir eine Reihe von Logos erstellt, um ein einzigartiges Logo zu erhalten. Als nächstes konvertieren wir die Sammlung in ein Array.

Danach verwenden wir das „source“-Attribut der Regex, um das Regex-Literal zu erhalten, und verwenden den „+“-Operator, um die beiden Regex-Literale zu kombinieren. Darüber hinaus haben wir bei der Erstellung des kombinierten Regex-Literals alle eindeutigen Flags verwendet, die in beiden Regex-Literalen enthalten sind.

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

Beispiel 2

Im folgenden Beispiel muss der Benutzer das reguläre Ausdrucksliteral und die zugehörigen Flags eingeben. Darüber hinaus muss der Benutzer zum Testen mit kombinierten regulären Ausdrücken eine Zeichenfolgeneingabe ausfüllen.

Jedes Mal, wenn der Benutzer die Taste drückt, führt er die Funktion „combineRegex()“ aus. Darin kombinieren wir zwei eingegebene reguläre Ausdrücke mit entsprechenden Flags. Danach verwenden wir die Methode test(), um zu prüfen, ob die Zeichenfolge mit dem kombinierten regulären Ausdruck übereinstimmt, und geben einen booleschen Wert zurück.

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

Beispiel 3

Im folgenden Beispiel schreiben wir zunächst den regulären Ausdruck in Form einer regulären Zeichenfolge. Danach führen wir die beiden Zeichenfolgen zusammen und erstellen mithilfe des RegExp()-Konstruktors einen neuen regulären Ausdruck aus der kombinierten Zeichenfolge.

Außerdem können wir die erforderlichen Flags als zweiten Parameter übergeben.

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

Fazit

Der Benutzer hat gelernt, reguläre Ausdrucksliterale in JavaScript zu verketten. Im ersten Beispiel verketten wir die regulären Ausdrucksliterale, nachdem wir sie erstellt haben. Im vorherigen Beispiel haben wir zunächst die Zeichenfolgen kombiniert und mithilfe der kombinierten Zeichenfolgen einen neuen regulären Ausdruck erstellt. Das letzte Beispiel verwendet jedoch kein reguläres Ausdrucksliteral, da es einen Konstruktor zum Erstellen des regulären Ausdrucks verwendet.

Das obige ist der detaillierte Inhalt vonWie verkette ich reguläre Ausdrucksliterale in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen