【问题标题】:How can I check if string has particular word in javascript如何检查字符串是否在javascript中有特定的单词
【发布时间】:2014-06-05 11:08:37
【问题描述】:

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

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

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

GRE:数学

GRE 数学

但我不想匹配:

大会

而且我特别需要匹配:

NON-WORD-CHARGRENON-WORD-CHAR 还有
GRE

就我而言,完美的正则表达式应该是什么?

【问题讨论】:

  • 仅供参考,为模式添加了详细说明。

标签: javascript regex string contains


【解决方案1】:

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

(\bGRE\b)

Here是解释

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

【讨论】:

    【解决方案2】:

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

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

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

    这将匹配

    GRE
    GRE:Math
    GRE-Math
    

    但不是CONGRES

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

    这是如何工作的?

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

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

    【讨论】:

      【解决方案3】:

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

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

      \b 表示单词边界

      【讨论】:

        猜你喜欢
        • 2011-07-20
        • 2011-05-20
        • 2013-12-23
        • 1970-01-01
        • 2023-04-01
        相关资源
        最近更新 更多