我正在处理一些自动完成示例,我只想要以输入文本开头的单词。
EG: - 如果我输入“al”,那么我只需要前两个,因为我的结果不是第三个
**Al**abama
**Al**aska
c**al**lifornia
答案 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;的假强>