如何找到缺少字母的匹配字符串?

时间:2016-05-20 18:36:08

标签: javascript regex string

我有一个带字符串的数组:

var dict =["johndoe","johnrte","jahnaoi"]; 

我想创建一个函数(使用正则表达式或其他函数)来检查" str"缺少字母符合其中一项。缺少的字母由"#"表示。 让我们说缺少字母的字符串是" j#hn#oe"。 我是这样开始的,但我认为我不会采取正确的方式。

     function Checkword(str) {
      // Check were is the #
      var indices = [0]
      for (var i = 0; i < str.length; i++) {
          if (str[i] === "#") indices.push(i);
      }
      var regexel = "/^";

      for (var index = 0; index < indices.length; index++) {
          regexel.concat(str.substring(indices[index - 1], indices[index]));
          regexel.concat("[a-z]");

      }
      regexel.concat("$/");
      var reg = new Regex(regexel);

      for (r = 0; r < dict.length; i++) {
          if (reg.test(dict[r]) {
                  console.log(dict[r]);
          }

      }


  }
  Checkword("j#hn#oe");

在这种情况下,它将返回第一个和最后一个项目。

***评论后编辑:

哪个词应该通过我的测试:

If str is j#hndo#=> dict[0], dict[2].
If str is j####### => dict[0], dict[1], dict[2];
IF str is Jonh#oe=> dict[0]
if str is a#ze#ts=> nothing.

1 个答案:

答案 0 :(得分:1)

感谢评论,这是一个比预期更容易的答案。谢谢!

var dict =["johndoe","johnrte","jahnaoi"]; 

var dict =["johndoe","johnrte","jahnaoi"]; 

function ismissing(str){

    while(str.indexOf("#")>0){
        str=str.replace('#', '[a-z]{1}');
}

    var reg=new RegExp(str);
    console.log(reg);

    for(i=0;i<dict.length;i++){

        if(reg.test(dict[i]))
            {console.log(dict[i])};
}


}
ismissing("j#hn#o#");

输出=&GT;

/j[a-z]{1}hn[a-z]{1}o[a-z]{1}/
johndoe
jahnaoi
undefined