我試圖用標籤替換一個包含url的文本與文本,我試圖使用類似這樣的東西,但我只是不明白爲什麼這是不工作,也許我太累了,也看到它。這裏是我的測試:Regex.Match與Regex.IsMatch的問題
[Test]
public void Check() {
string expUrl = @"^(https?://)"
+ @"?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-][email protected])?" //[email protected]
+ @"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP- 199.194.52.184
+ @"|" // allows either IP or domain
+ @"([0-9a-z_!~*'()-]+\.)*" // tertiary domain(s)- www.
+ @"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]" // second level domain
+ @"(\.[a-z]{2,6})?)" // first level domain- .com or .museum is optional
+ @"(:[0-9]{1,5})?" // port number- :80
+ @"((/?)|" // a slash isn't required if there is no file name
+ @"(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
const string url = "http://www.google.com";
var b = Regex.IsMatch(url, expUrl);
Assert.IsTrue(b);
var text = string.Format("this is a link... {0} end of link", url);
var resul = Regex.Match(text, expUrl);
Assert.IsTrue(resul.Success);
}
爲什麼url變量通過IsMatch檢查,但沒有通過匹配檢查?提前致謝。
只是一個供參考,對於.NET正則表達式的測試,這是一個偉大的工具,最後一行:http://regexhero.net/tester/ – 2009-10-21 22:03:36