代码之家  ›  专栏  ›  技术社区  ›  me-me

用js搜索字母字符串

  •  -2
  • me-me  · 技术社区  · 5 年前

    我在打字时试着在字符串中搜索字母。 我试过这样的方法,但没有给出正确的结果。 去掉输入代码,我只想做一个匹配。

    var str = 'Hello World';
    var expr = /ol/i;
    const result = str.search(expr);
    console.log('result = ', result);
    

    结果是-1;但是字符串中有字母ol? 我唯一能让它起作用的方法就是把字母按顺序

    var expr = /lo/i;
    
    3 回复  |  直到 5 年前
        1
  •  1
  •   CertainPerformance    5 年前

    将要搜索的内容分成几个字符,然后检查 .every 其中一个包含在您的输入中:

    const input = 'Hello World';
    const inputLower = input.toLowerCase();
    const charsToFind = 'ol'
      .toLowerCase();
    if ([...charsToFind].every(char => inputLower.includes(char))) {
      console.log('all chars are included');
    }

    如果你想提高效率,你可以用一个集合来代替( Set.has O(1) , String.includes O(n) ):

    const input = 'Hello World';
    const inputLowerSet = new Set(input.toLowerCase());
    const charsToFind = 'ol'
      .toLowerCase();
    if ([...charsToFind].every(char => inputLowerSet.has(char))) {
      console.log('all chars are included');
    }
        3
  •  0
  •   Tanner    5 年前

    如果要搜索正则表达式中出现的字符,则需要将这些字符包装在[方括号]中。这样修改代码时,将返回2作为结果,因为“o”或“l”的第一次命中是在索引2处。

    http://regexr.com/4ff2d

    var str = 'Hello World';
    var expr = /[ol]/i;
    const result = str.search(expr);
    console.log('result = ', result);
    //result =  2