如何检查字符串是否在javascript中有特定的单词

时间:2014-04-21 11:28:39

标签: javascript regex string contains

现在,我知道我可以计算一个字符串是否包含特定的子字符串。使用这个:

if(str.indexOf("substr") > -1){
}

我的子字符串'GRE'我想匹配我的自动完成列表:

  

GRE:数学

     

GRE-数学

但我不想匹配:

  

CONGRES

我特别需要匹配:

NON-WORD-CHAR {GRE {1}} 还有 NON-WORD-CHAR

在我的案例中,什么应该是完美的正则表达式?

3 个答案:

答案 0 :(得分:2)

也许你想使用\b字边界:

(\bGRE\b)

Here是解释

演示:http://regex101.com/r/hJ3vL6

答案 1 :(得分:2)

MD,如果我理解你的规范,这个简单的正则表达式应该适合你:

\W?GRE(?!\w)(?:\W\w+)?

但如果您能够指定您愿意允许的非单词字符,我会更喜欢[:-]?GRE(?!\w)(?:[:-]\w+)?之类的内容(请参阅下面的说明)。

这将匹配

GRE
GRE:Math
GRE-Math

但不是CONGRES

理想情况下,我想将\W(非单词字符)替换为允许字符列表,例如[-:]为什么?因为\W会匹配您不想要的非单词字符,例如空格和回车符。那么该列表中的内容供您决定。

这是如何运作的?

\W?可选地匹配您指定的单个非单词字符。然后我们匹配文字GRE。然后,前瞻(?!\w)断言下一个字符不能是单词字符。然后,可选地,我们匹配非单词字符(根据您的规范),后跟任意数量的单词字符。

根据您看到出现的位置,您可以添加边界。

答案 2 :(得分:0)

您可以使用正则表达式:/\bGRE\b/g

if(/\bGRE\b/g.test("string")){
  // the string has GRE
}
else{
  // it doesn't have GRE
}

\b表示字边界