preg_match in JavaScript?


75

Ist es möglich , in JavaScriptetwas zu tun , wie preg_matchin tut PHP?

Ich möchte in der Lage sein, zwei Zahlen aus der Zeichenfolge zu erhalten:

var text = 'price[5][68]';

in zwei getrennte Variablen:

var productId = 5;
var shopId    = 68;

Bearbeiten: Ich benutze auch, MooToolswenn es helfen würde.

Antworten:


112

JavaScript hat ein RegExpObjekt, das macht, was Sie wollen. Das StringObjekt hat eine match()Funktion, die Ihnen helfen wird.

var matches = text.match(/price\[(\d+)\]\[(\d+)\]/);
var productId = matches[1];
var shopId    = matches[2];

32
Für andere Googler; text.matchgibt das Ergebnis des Abgleichs zurück. so var match = text.match(/price\[(\d+)\]\[(\d+)\]/)und dannalert(match[1]);
Maurice

33
var text = 'price[5][68]';
var regex = /price\[(\d+)\]\[(\d+)\]/gi;
match = regex.exec(text);

match [1] und match [2] enthalten die gesuchten Zahlen.


23
var thisRegex = new RegExp('\[(\d+)\]\[(\d+)\]');

if(!thisRegex.test(text)){
    alert('fail');
}

Ich fand, dass test mehr preg_match verhält, da es eine boolesche Rückgabe liefert. Sie müssen jedoch eine RegExp-Variable deklarieren.

TIPP: RegExp fügt am Anfang und am Ende ein eigenes hinzu. Übergeben Sie es also nicht.


6
Sie können dies auch mit/\[(\d+)\]\[(\d+)\]/.test(text)
0x6C77

Ich stimme zu, da ich nach einer Möglichkeit gesucht habe, die Regex-Testfunktion von preg_match zu reproduzieren, als ich den Titel dieser Frage sah;)
Grippe

Die Verwendung des RegExp-Klassenkonstruktors hat den Vorteil, dass beim Interpolieren einer Variablen im Muster eine Zeichenfolge erforderlich ist!
Nathaniel Rogers

Funktioniert nur für mich, wenn ich Backslashes entkomme, wie '\ [(\\ d +) \] \ [(\\ d +) \]'
Nr.

6

Das sollte funktionieren:

var matches = text.match(/\[(\d+)\][(\d+)\]/);
var productId = matches[1];
var shopId = matches[2];

4
var myregexp = /\[(\d+)\]\[(\d+)\]/;
var match = myregexp.exec(text);
if (match != null) {
    var productId = match[1];
    var shopId = match[2];
} else {
    // no match
}

0

Beispielcode zum Abrufen von Bildlinks innerhalb von HTML-Inhalten. Wie preg_match_all in PHP

let HTML = '<div class="imageset"><table><tbody><tr><td width="50%"><img src="htt ps://domain.com/uploads/monthly_2019_11/7/1.png.jpg" class="fr-fic fr-dii"></td><td width="50%"><img src="htt ps://domain.com/uploads/monthly_2019_11/7/9.png.jpg" class="fr-fic fr-dii"></td></tr></tbody></table></div>';
let re = /<img src="(.*?)"/gi;
let result = HTML.match(re);

out Array

0: "<img src="htt ps://domain.com/uploads/monthly_2019_11/7/1.png.jpg""
1: "<img src="htt ps://domain.com/uploads/monthly_2019_11/7/9.png.jpg""

0

Ein bisschen Googeln hat mich dazu gebracht :

function preg_match (regex, str) {
  return (new RegExp(regex).test(str))
}
console.log(preg_match("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$","test"))
console.log(preg_match("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$","what@google.com"))

Weitere Informationen finden Sie unter https://locutus.io .


0

Matched String zurück oder false bekommen

function preg_match (regex, str) {
  if (new RegExp(regex).test(str)){
    return regex.exec(str);
  }
  return false;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.