2016-11-27 4 views

Antwort

2

Sie können die Länge des übereinstimmenden Arrays überprüfen, und wenn es 1 ist, dann ist es eine gültige Eingabe;

function isValid(str) { return (str.match(/abc/g) || []).length; } 

verwenden sie dann als:

isValid('foobar') 
//=> 0 - Bad 

isValid('qabce') 
//=> 1 - Good 

isValid('qabceabcr') 
//=> 2 - Bad 

Wenn Sie eine reine regex Lösung wollen, dann können Sie diese negative Vorschau regex verwenden:

/\b((?!abc)\w)*abc(?!.*abc)\w*/ 

RegEx Demo

  • ((?!abc)\w)* ist eine negative Lookahead-basierte Übereinstimmung von 0 oder mehr Wortzeichen. Es behauptet, dass die nächste Position abc
  • (?!.*abc) ist negativer Lookahead, der behauptet, dass wir keine weitere abc voraus in dem Wort haben.
+0

@ user2417883: Hat diese Arbeit aus? – anubhava

2

Versuchen Sie, die globale g Flagge

var multipleTimes = "qabceabcr".match(/abc/g).length > 1 
Verwandte Themen