我有以下正则表达式 -
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}
答案 0 :(得分:6)
您可以使用:
/[hH][rR][eE][fF]\s*=\s*[\"']{clickurl}(.*)[\"']/
更改的部分是:[hH][rR][eE][fF]
,表示:
匹配h
或H
,然后是r
或R
,然后是e
或E
,然后是{{1 }或f
。
如果您想使其成为通用的,您可以创建一个帮助函数,它将接收F
之类的文本字符串并返回abc
。它应该非常简单。
答案 1 :(得分:2)
您无法使其区分大小写,但您可以始终具体:
bannerHtml.match(/[hH][rR][eE][fF]\s*=\s*["']{clickurl}(.*)["']/);
替代方法是使用辅助正则表达式丢弃错误匹配。
作为注释,不需要转义引号字符"
,因为只有斜杠/
是分隔符。
答案 2 :(得分:0)
首先,我必须说这是一个非常好的问题。我想到了你的问题的两个解决方案:
以小写形式生成所有href
个字符串:
bannerHtml.replace(/href/ig,"href")
首先,我用括号括起{clickurl}供以后使用:({clickurl})
。
然后,我匹配整个不区分大小写的字符串,看它是否与模式匹配。最后,我检查了存储在{clickurl}
中的result[1]
字符串匹配,看看它是否在确切的情况下。
var re=/href\s*=\s*[\"']({clickurl})(.*)[\"']/i;
var result = re.exec(bannerHtml);
if(result && result[1]=="{clickurl}"){
//Match!
}
我知道它不是非常正规的解决方案,但我认为这是我能想到的最好的解决方案。祝你好运。