正则表达式比较字符串数组的前n个字符

时间:2015-04-25 22:32:23

标签: javascript jquery regex

我正在处理一些自动完成示例,我只想要以输入文本开头的单词。

EG: - 如果我输入“al”,那么我只需要前两个,因为我的结果不是第三个

**Al**abama
**Al**aska
c**al**lifornia

2 个答案:

答案 0 :(得分:2)

你不需要正则表达式。只需检查您的搜索字符串是否位于您要检查的字符串的第一个位置:

"Some string".indexOf("So") === 0;

如果您愿意,可以使其不区分大小写:

"Some string".toLowerCase().indexOf("So".toLowerCase()) == 0;

并将其包装成功能:

function startsWith(str, search){
     return str.toLowerCase().indexOf(search.toLowerCase()) == 0;
}

答案 1 :(得分:1)

如果您想要最快的方法(不区分大小写)

var options = ['Alabama', 'Alaska', 'California', 'New York'];

function compare (string, ar) {
    return ar.filter(function (a) {
        return a.toLowerCase().indexOf(string.toLowerCase())===0;
    });
}

var results = compare('AL', options);
console.log( results );

results是:

  

[" Alabama"," Alaska"]

这通过遍历所有选项来工作,它会检查字符串是否以字符串开头,如果是,则保留它们

如果您想要REGEX:

var options = ['Alabama', 'Alaska', 'California', 'New York'];

function compare (string, ar) { 
    return ar.filter(function (a) { 
        return (new RegExp("^(?:" + string + ")", "i")).test(a);
    }); 
}

var results = compare('AL', options);
console.log( results );

<小时/> 如果您只想测试一个项目,请执行以下操作:

function compare (a, b) { 
    return a.toLowerCase().indexOf(b.toLowerCase())===0 
}
  

compare('Al', 'Alabama'); - &gt;的

     

compare('AL', 'Alabama'); - &gt;的

     

compare('al', 'California'); - &gt;的