2013-02-20 103 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! 
    } 
    

我知道它不是很正則表達式的解決辦法,但我這是我能想到的最好的。祝你好運。

相關問題