测试所有给定的字符串是否为字符串 - Javascript

时间:2015-09-25 19:21:41

标签: 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++) {
  if(valid.indexOf(required.chatAt(i)) === -1) {
     break;
  }
}
if(i !== 3) {
  alert('Invalid');
}

我们可以在RegExp中完成吗?如果有,任何帮助PLZ!

先谢谢。

2 个答案:

答案 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');
}

希望它有所帮助。