我正在寻找智能,快速和简单的方法来检查字符串是否包含所有预定义的字符串。
例如:
var required = 'cfov'; //These are the char's to test for.
var obj = {valid: 'vvcdfghoco'}; //Valid prop can contains any string.
//what I have so far::
var valid = obj.valid, i = 0;
for(; i < 4; i++) {
if(valid.indexOf(required.chatAt(i)) === -1) {
break;
}
}
if(i !== 3) {
alert('Invalid');
}
我们可以在RegExp中完成吗?如果有,任何帮助PLZ!
先谢谢。
答案 0 :(得分:3)
您可以为搜索字符串构建前瞻性正则表达式:
var re = new RegExp(required.split('').map(function(a) {
return "(?=.*" + a + ")"; }).join(''));
//=> /(?=.*c)(?=.*f)(?=.*o)(?=.*v)/
正如您所注意到的,此正则表达式为搜索字符串中的每个字符添加了一个预测,以确保主题中存在所有单个字符。
现在测试一下:
re.test('vvcdfghoco')
true
re.test('vvcdghoco')
false
re.test('cdfghoco')
false
re.test('cdfghovco')
true
答案 1 :(得分:1)
你可以这样做:
var required = 'cfov'; //These are the char's to test for.
var valid = 'vvcdfghoco'; //Valid prop can contains any string.
var regex = new RegExp("^[" + valid + "]*$");
/* this line means:
from start ^ till * the end $ only the valid characters present in the class [] */
if (required.match(regex)) {
document.write('Valid');
}
else {
document.write('Invalid');
}
希望它有所帮助。