【问题标题】:Javascript Regex for a partial string match onlyJavascript Regex 仅用于部分字符串匹配
【发布时间】:2014-07-17 11:11:39
【问题描述】:

我需要编写一个仅匹配单词中部分字符串的 JavaScript RegEx。

例如,如果我使用字符串 'atta' 进行搜索

它应该返回

true for khatta
true for attari
true for navrattan
false for atta

我不知道如何使用一个 RegEx 来完成这项工作。谢谢!

【问题讨论】:

    标签: javascript regex string match partial


    【解决方案1】:

    您想在此处使用非单词边界\B

    /\Batta|atta\B/
    

    【讨论】:

    • 我认为这是一个比我的更清晰的答案
    • 好一个。我可以补充一点,对于test,捕获组是无用的并且会消耗内存。我想知道!/\batta\b/.test(string) 是不是更快...
    • @MaxArt 那不也匹配“foobar”吗?如果您真的担心捕获组,请使用非捕获组:/(?:\Batta|atta\B)/
    • 我相信!/\batta\b/.test(string) 会为“this too”返回 true。我至少需要部分匹配。
    • 是的,/\batta\b/ 会匹配根本不包含“atta”的字符串——我猜 OP 不希望这样。 @LeeKowalkowski 在这种情况下,也不需要组。
    【解决方案2】:

    sp00m 几乎做对了

    ^(atta.+|.+atta|.+atta.+)$
    

    Fiddle.

    如果不允许空格,你可以写

    ^(atta[\S]+|[\S]+atta|[\S]+atta[\S]+)$
    

    【讨论】:

    • 甚至^(atta.+|.+atta.*)$ ;)
    • 嗯...所以atta 给出错误但atta 给出正确。
    猜你喜欢
    • 2012-02-22
    • 2012-10-29
    • 1970-01-01
    • 2018-03-28
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2019-09-23
    相关资源
    最近更新 更多