2017-09-25 55 views
-2

使用此正則表達式時,我無法找到url,如果Url類似於 CIO.in,Compgterworld.iq,ChannelWorld.in等 取而代之,此正則表達式將電子郵件ID作爲網址。 如何排除電子郵件ID並將這些網址視爲有效的網址。查找字符串中的所有網址

const string MatchUrlPattern = 
    @"(^(http[s]?://)?([w]{3}[.])?([a-z0-9]+[.])+com(((/[a-z0-9]+)*(/[a-z0-9]+/))*([a-z0-9]+[.](html|php|gif|png))?)$)|(^([.]/)?((([a-z0-9]+)/?)+|(([a-z0-9]+)/)+([a-z0-9]+[.](html|php|gif|png)))?$)"; 

Regex urlrx = new Regex(MatchUrlPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); 

MatchCollection urlmatches = rx.Matches(contentString); 

int urlnoOfMatches = matches.Count; 

foreach (Match match in urlmatches) 
{ 
    Console.WriteLine(match.Value.ToString()); 
} 
+0

爲[Uri.TryCreate(https://msdn.microsoft.com/en-us/library/ms131572(V = VS.90)的.aspx)和[IsWellFormedUriString](https://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx)給你錯誤的結果? –

+0

但是'@'可以在每個URL RFC中有效..例如'http://-.~_!$&'()* +,; =:%40:80%2f :::::: @ example.com'是一個有效的URL –

+0

不要得到它。 我只需要一個正則表達式來查找字符串中的Url。網址就像 CIO.in Compgterworld.iq ChannelWorld.in @DragandDrop – SaTyA

回答

0

使用下面的正則表達式所有的測試場景

[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\S*)? 
-1

我不認爲這是過濾URL這樣一個好主意,但如果你仍然想捕捉那些然後使用此:

 

    ((http|ftp|https)://)?([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])? 

我用這個頁面文字作爲輸入,它給了我這些結果:

 

    CIO.in 
    Compgterworld.iq,ChannelWorld.in 
    RegexOptions.Compiled 
    RegexOptions.IgnoreCase 
    rx.Matches 
    matches.Count 
    Console.WriteLine 
    match.Value.ToString 
    Path.Combine 
    3.0 
    2017.9.24.27120 

這就是我的意思是不理想的過濾這種方式

+0

It will not Work @Riz – SaTyA

相關問題