测试是否所有给定字符';s是字符串-Javascript
我正在寻找智能、快速和简单的方法来检查字符串是否包含所有预定义的字符 例如:测试是否所有给定字符';s是字符串-Javascript,javascript,regex,Javascript,Regex,我正在寻找智能、快速和简单的方法来检查字符串是否包含所有预定义的字符 例如: 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++) { i
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');
}
var required='cfov'//这些是要测试的字符。
var obj={valid:'vvcdfghoco'}//有效的属性可以包含任何字符串。
//到目前为止我所拥有的:
var valid=obj.valid,i=0;
对于(;i<4;i++){
if(有效的.indexOf(必需的.chatAt(i))=-1){
打破
}
}
如果(i!==3){
警报(“无效”);
}
我们可以用RegExp做吗?如果是,请提供任何帮助
提前感谢。您可以为搜索字符串构建一个前瞻正则表达式:
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
您可以这样做:
var required='cfov'//这些是要测试的字符。
var valid='vvcdfghoco'//有效的属性可以包含任何字符串。
var regex=new RegExp(“^[”+valid+“]*$”);
/*这一行的意思是:
从start^到*end$仅类[]中存在的有效字符*/
如果需要(匹配(正则表达式)){
文件。写入(“有效”);
}
否则{
文件。写入(“无效”);
}
我认为我们不需要使用map来构造RegExp,因为所需的字符是预定义的(请参见我的问题)。我可以安全地构造RegExp=/(?=.*c)(?=.*f)(?=.*o)(?=.*v)/
是的,如果它是预定义的搜索字符串,您绝对可以使用/(?=.*c)(?=.*f)(?=.*o)(?=.*v)/
。我想我关注的是搜索字符串可以是动态的,并且事先不知道。