2017-04-03 123 views
0

我正在创建一个javascript(Node.js)循环函数,该函数应该遍历字符串数组,然后在针对正则表达式进行测试时返回true或false。如果FALSE,立即返回值(打破循环)。但是,数组中的第二个值仍然返回false,尽管它是有效的。正则表达式循环问题

调用函数传递这些值:

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

[它工作得很好,对我来说,(https://jsfiddle.net/nuj1f9bq/) –

+0

感谢迈克,我剪辑了一堆,它围绕着其他代码保持通用。可能是因为我在AWS Lambda函数中以Promises链的形式调用了这个函数。我会将其标记为已回答并继续前进。 –

+1

有什么理由让你编写复杂的代码?我更喜欢'valuesArray.every(regex.test);',它看起来和函数名一样简短。如果你迫切需要一个函数,那么'const validateArrayValues =(ar => ar.every(regex.test));'? – phihag

回答

1

正常工作,其他任何您去除,以保持例子简单?

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