2013-02-20 72 views
4

我有以下的正则表达式 -的JavaScript不区分大小写的匹配字符串的一部分,只有

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}

回答

5

您可以使用:

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

,改变是将部分:[hH][rR][eE][fF],这意味着:

匹配hH,其次是rR,其次是eE,然后是fF


如果你想使它通用,您可以创建将收到一个文本字符串像abc并返回[aA][bB][cC]一个辅助功能。它应该是非常简单的。

+0

+1回答第一个:) – 2013-02-20 07:13:38

+0

哦,你建议的帮手功能..谢谢 – 2013-02-20 07:18:18

2

你不能让它部分区分大小写的,但你总可以具体:

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

的替代方式是使用二次正则表达式来排除虚假匹配。

作为一个说明,它不是必需的逃避引号字符"因为只有斜线/是分隔符。

+0

你能举个例子吗?至少有任何链接或指针?这种方法对我来说看起来不太干净,因为我们必须为每个字符编写代码。 – 2013-02-20 06:48:30

+0

你知道,你只能从正则表达式中提出这么多问题。为每封信做这件事可能很烦人,但你只在这里处理四个字。无论如何这都是'/ i'选项。你有的选择是写一个辅助表达式来确保'clickurl'是小写的。当这个调整后的表达完成这项工作时,这似乎浪费时间。 – tadman 2013-02-20 06:53:02

+0

@tadman或者只是创建一个辅助函数(如果他将与其他正则表达式一起使用,而不是'href'),它会将'xyz'转换为'[xX] [yY] [zZ]'.. – 2013-02-20 06:59:25

0

首先,我必须说这是一个非常好的问题。在小写

  1. 使所有href字符串:我想到了2个解决您的问题

    所有的

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

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

    var re=/href\s*=\s*[\"']({clickurl})(.*)[\"']/i; 
    
    var result = re.exec(bannerHtml); 
    
    if(result && result[1]=="{clickurl}"){ 
        //Match! 
    } 
    

我知道它不是很正则表达式的解决办法,但我这是我能想到的最好的。祝你好运。

相关问题