2011-08-23 97 views
0

如何編寫正則表達式來檢查給定字符串中是否存在一組單詞?如何創建一個正則表達式來檢查給定字符串中是否存在一組單詞?

例如,我想檢查一個域名是否包含「yahoo.com」的結尾。

'answers.yahoo.com',將是有效的。
'yahoo.com.answers',將是錯誤的。 'yahoo.com'必須進入最後。

我從某處得到了一個暗示,可能是這樣的。

"/^[^yahoo.com]$/" 

但我對於正則表達式是全新的。所以請幫助這個,然後我可以進一步學習。

+0

如果你想檢查一個特定的序列,一個正則表達式就足夠了。如果你真的想檢查所有的單詞,你需要遍歷相應的正則表達式。雖然你的問題需要澄清。此外,使用正則表達式來檢查一個有效的域名似乎是徒勞的 - 唯一的方法是DNS查詢。 – tripleee

+1

你想要什麼語言這個正則表達式? – anubhava

+0

正則表達式^(yahoo \ .com)$'檢查行'^'的開頭,後面跟着字符串'yahoo.com'(在這種情況下,括號是多餘的;我把它們放在這裏指出這些應該是圓括號,而不是方括號),並且如果行'$'結束。如果你想用它前面的任何東西來檢查這個字符串,那麼放下行開始的錨點'^'。請注意,如果你這樣做,正則表達式也將匹配例如'aaayahoo.com'。但是,除非你的問題可以理解,否則讓我們留在這裏。 – tripleee

回答

1

當提出正則表達式問題時,也總是指定語言或應用程序!

從您的歷史看,它最有可能是JavaScript/jQuery。

無論如何,來測試一個字符串「yahoo.com」結尾使用/.*yahoo\.com$/i

在JS代碼:

if (/.*yahoo\.com$/i.test (YOUR_STR)) { 
    //-- It's good. 
} 


要測試一組單詞是否具有至少一個匹配,用途:

/word_one|word_two|word_three/ 


要限制火柴只是最常見,合法子域,用 「yahoo.com」 結尾,使用:

/^(\w+\.)+yahoo\.com$/ 

(作爲粗,第一遍)

對於其他排列,請澄清的問題。

+0

開始'。*'是多餘的。 – tripleee

+0

@tripleee,當測試一個字符串時,這是多餘的*。但是這是一個不傷人的好習慣,當正則表達式演化爲抽取或替換時,通常需要這樣的東西。 –

+0

我試過了,'/ ^([A-Za-z0-9] +。)+ yahoo.com $ /這幾乎是正確的。但我不明白,它沒有檢測到類似以下內容的錯誤:'a%v.ab.yahoo.com'。現在它會在'a .ab.yahoo.com'中檢測到錯誤。但是,如果我在該%之後添加另一個字符,它將正確傳遞該字符串!那個正則表達式中發生了什麼? – Shades88

相關問題