2016-11-28 3 views
1

Ich möchte überprüfen, ob eine Zeichenfolge wie "Der Computer kostet 2.000 $" einen Preis enthält oder nicht.Enthält eine Saite einen Preis?

ich modified this regex leicht meine Bedürfnisse und die aktuelle Regex passen, dass ich wie folgt aussieht bin mit:

var regexTest = /(?=.)^\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$/; 

Wenn ich regexTest.test("$2,000"); tun es wahr zurück. Wenn ich der Zeichenfolge jedoch zusätzliche Zeichen wie regexTest.test("The computer costs $2,000"); hinzufüge, wird false zurückgegeben.

Wie soll ich den Regex-Code ändern, um für das zweite Beispiel wahr zurückzugeben?

Antwort

1

entfernen Sie Ihre ^ in Regex. Versuchen Sie dieses

Auch $ als auch zu entfernen, so Preis wie diese $5.000,00 words zurückkehren Ich empfehle true

var regexTest = /(?=.)\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?/; 
 

 
console.log(regexTest.test('computer $5,000.00')); 
 
console.log(regexTest.test('$5,000.00')); 
 
console.log(regexTest.test('$5,000.00 that was computer price')); 
 
console.log(regexTest.test('computer 5,000.00'));

+1

vielleicht auch Ihre Schnipsel mit Fehlerszenario aktualisieren. –

+0

bearbeitet. Danke @ A.J – RizkiDPrast

+0

@ RizkiDPrast genau das, was ich gesucht habe. Es funktioniert perfekt, vielen Dank! –

0

Der globale Modifikator sollte funktionieren. Fügen Sie die g nach dem letzten/

var regexTest = /(?=.)^\$(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$/g; 

Sollte mit allen Instanzen innerhalb der Test-String übereinstimmen.

Verwandte Themen