告诉多字词串是否包含单词

时间:2014-06-08 04:32:51

标签: javascript jquery regex

目标:

(我不认为这是重复的原因是它涉及匹配字符串中每个单词的开始,而不是字符串中的任何内容)

我正在使用Javascript / jQuery。说我有一个刺痛,这是:

Muncie South Gateway Project

我正在创建一个实时搜索框,它会在每次按键时检查字符串的输入。如果输入匹配单词的开头而不是中间,我想返回匹配。例如:

Mu = Match
Muncie = Match
unc = No Match
cie = No Match
Gatewa = Match
atewa = No Match

我拥有什么

我目前正在使用此作为我的支票:

if (new RegExp(input)).test(string.toLowerCase()) {return '1';}

然而,这匹配所有字母,包括单词中间的字母。有了它,然后我的例子得到了这个结果:

M = Match
Mu = Match
Mun = Match
Muncie = Match
unc = Match // Should not match
cie = Match // Should not match
Gatewa = Match
atewa = Match // Should not match

问题:

我知道这可以通过将字符串分成单独的单词并测试每个单词来完成。但我不确定会有多高效。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用单词边界来确保给定的输入仅匹配单词字符的开头:

if (new RegExp("\\b" + input)).test(string.toLowerCase()) {return '1';}

Working Demo

编辑:根据以下评论,您可以使用:

var re = new RegExp("(?:^|\\s)" + input, "i"));
if (re.test(string)) {return '1';}

答案 1 :(得分:1)

我会使用StartsWith和Contains:

// input
instring // the user string 
searchstr //  the string to search

if (searchstr.ToLower().StartsWith(instring.ToLower())
 || searchstr.ToLower().Contains(" "+instring.ToLower()))
{
  // etc