2017-04-03 4 views
0

Ich erstelle eine Javascript (Node.js) Schleifenfunktion, die durch ein Array von Zeichenfolgen durchlaufen soll, dann Rückgabe True oder False beim Test gegen einen regulären Ausdruck. Wenn FALSE, gebe den Wert sofort zurück (bricht die Schleife). Der zweite Wert im Array gibt jedoch weiterhin false zurück, obwohl es gültig ist.Regelmäßige Ausdrücke Schleife Problem

Die Aufruffunktion übergibt diese Werte:

var valuesArray = ["ABCXYZ", "ABCXYZ1"]; 
var regexValue = /[a-zA-Z0-9]+$/; 
var regex = new RegExp(regexValue); 

function validateArrayValues(valuesArray, regex) { 
    var regexResult, item; 
    for (let counter = 0; counter < valuesArray.length; counter++) { 
     item = valuesArray[counter]; 
     regexResult = regex.test(item); 
     if (!regexResult) return false; 
    } 
    return true; 
} 
+2

[Es funktioniert für mich ganz gut.] (Https://jsfiddle.net/nuj1f9bq/) –

+0

Dank Mike, ich abgeschnitten ein paar der anderen Code aus, die sie umgibt, um halte es für generisch. Es könnte sein, dass ich dies in einer Kette von Versprechen in einer AWS-Lambda-Funktion anrufe. Ich werde es als beantwortet markieren und weitermachen. –

+1

Gibt es einen Grund, warum Sie Ihren Code so kompliziert schreiben? Ich bevorzuge einfach 'valuesArray.every (regex.test);', was fast so kurz wie der Funktionsname scheint. Wenn Sie verzweifelt eine Funktion benötigen, wie wäre es mit 'const validateArrayValues ​​= (ar => ar.every (regex.test));'? – phihag

Antwort

1

Arbeit richtig, alles andere entfernt man das Beispiel einfach zu halten?

var valuesArray = ["ABCXYZ", "ABCXYZ1"]; 
 
var regexValue = /[a-zA-Z0-9]+$/; 
 
var regex = new RegExp(regexValue); 
 

 
function validateArrayValues(valuesArray, regex) { 
 
    var regexResult, item; 
 
    for (let counter = 0; counter < valuesArray.length; counter++) { 
 
     item = valuesArray[counter]; 
 
     regexResult = regex.test(item); 
 
     if (!regexResult) return false; 
 
    } 
 
    return true; 
 
} 
 

 
console.log(validateArrayValues(valuesArray, regex));