javascript不区分大小写,仅用于字符串的一部分

时间:2013-02-20 06:40:34

标签: javascript regex case-insensitive

我有以下正则表达式 -

bannerHtml.match(/href\s*=\s*[\"']{clickurl}(.*)[\"']/);

匹配以下内容 -
href = "{clickurl}

现在,我希望仅href 的匹配不区分大小写,而不是整个字符串。 我检查了添加i模式修饰符,但它似乎总是用于整个字符串 -

bannerHtml.match(/href\s*=\s*[\"']{clickurl}(.*)[\"']/i); 

更多详情 我希望以下所有内容相匹配 -
hREF = "{clickurl}
href = "{clickurl}
HREF = "{clickurl}

但是,大写案例clickurl部分不应该匹配 -
href = "{CLICKURL}

3 个答案:

答案 0 :(得分:6)

您可以使用:

/[hH][rR][eE][fF]\s*=\s*[\"']{clickurl}(.*)[\"']/

更改的部分是:[hH][rR][eE][fF],表示:

匹配hH,然后是rR,然后是eE,然后是{{1 }或f


如果您想使其成为通用的,您可以创建一个帮助函数,它将接收F之类的文本字符串并返回abc。它应该非常简单。

答案 1 :(得分:2)

您无法使其区分大小写,但您可以始终具体:

bannerHtml.match(/[hH][rR][eE][fF]\s*=\s*["']{clickurl}(.*)["']/);

替代方法是使用辅助正则表达式丢弃错误匹配。

作为注释,不需要转义引号字符",因为只有斜杠/是分隔符。

答案 2 :(得分:0)

首先,我必须说这是一个非常好的问题。我想到了你的问题的两个解决方案:

  1. 以小写形式生成所有href个字符串:

    bannerHtml.replace(/href/ig,"href")

  2. 首先,我用括号括起{clickurl}供以后使用:({clickurl})。 然后,我匹配整个不区分大小写的字符串,看它是否与模式匹配。最后,我检查了存储在{clickurl}中的result[1]字符串匹配,看看它是否在确切的情况下。

    var re=/href\s*=\s*[\"']({clickurl})(.*)[\"']/i;
    
    var result = re.exec(bannerHtml);
    
    if(result && result[1]=="{clickurl}"){
        //Match!
    }
    
  3. 我知道它不是非常正规的解决方案,但我认为这是我能想到的最好的解决方案。祝你好运。