2011-03-01 30 views
0

應該我有以下字符串,它下面的正則表達式匹配字符串。我希望它不匹配。正則表達式問題:無效的URL匹配,而不是

測試字符串yahoo.c!om

正則表達式模式[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

使用an online tester,我可以驗證 「yahoo.c嗡!」 的比賽。我無法弄清楚如何修改RegEx模式以使其不匹配。有沒有人有任何想法?這RegEx的東西讓我想跳下一座建築物。

+0

你能告訴你使用什麼**做**你想正則表達式匹配?如果我們不知道這一點,那麼正則表達式可能不符合你想要的。 – 2011-03-01 20:04:17

+2

子句: '(。[\ w -_] +)+' 匹配整個網址,引擎將從此處繼續報告匹配。如果您可以提供更多關於您想要完成的信息,這將會非常有用。 – avgvstvs 2011-03-01 20:14:08

+1

也許這條款(@ matt.seil)應該是'(\。[\ w -_] +)+'? – 2011-03-01 20:17:08

回答

4

在正則表達式的.(比換行符其他)的任何字符匹配。所以在.

[\w-_]+(.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])? 
     ^
     ^
     ^

與從yahoo.c!om!。逃離.相匹配的文字,而不是.

[\w-_]+(\.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])? 
     ^^ 
     ^^ 
     ^^ 

這樣,yahoo.c!om將不完全匹配。

你可能想「錨」您正則表達式的「開始」 - 和「結束輸入」元字符(^$分別):

^[\w-_]+(\.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])?$ 
+0

這似乎工作。謝謝。 – Beems 2011-03-01 20:54:01

+0

@Beems,不客氣。 – 2011-03-01 20:58:40