我正在循环遍历一个数组,我正在检查keydown(用户按下的键)是否与数组中的单词匹配 - 如果匹配,它会警告匹配的列表..像这样:
$.each(keywords, function(i) {
var rSearchTerm = new RegExp('\\b' + searchTerm + '\\b','i');
if (keywords[i].match(rSearchTerm)) {
keywordIndex = i;
alert(keywords[i]);
}
});
这样可以正常工作,但是会检查整个单词。如何在正则表达式中检查每个列表中的第一个字母呢?
答案 0 :(得分:3)
如果searchTerm
是一个字母且keywords
是一个字符串数组:
$.each(keywords, function(i) {
var rSearchTerm = new RegExp('\\b' + searchTerm + '\\w*\\b','i');
if (keywords[i].match(rSearchTerm)) {
keywordIndex = i;
alert(keywords[i]);
}
});
\w
是character class shorthand。正则表达式匹配单词边界,后跟searchTerm
字母,后跟无(单个字母)或更多(单词开头)单词字符。最后一个单词边界(\b
)可以省略。
如果searchTerm
是一个字母且keywords
是字数组:
$.each(keywords, function(i) {
if (keywords[i].substring(0, 1) == searchTerm) {
keywordIndex = i;
alert(keywords[i]);
}
});
BTW:您可以(并且应该?)在return false;
之后添加alert();
语句以打破循环(如果您只需要找到第一次出现)。