2017-02-16 1 views
0

Ich habe versucht, die folgenden Regex mehrere URLs zu validieren, aber es funktioniert nicht richtig.Wie validiere ich mehrere URLs getrennt durch Kommas mit einem regulären Ausdruck in .net mvc 4

[Required] 
[DisplayName("Top Post Url")] 
[DataType(DataType.Url)] 
[RegularExpression(@"(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-   
9+&@#/%=~_|]", ErrorMessage = "Invalid Url")] 

public string PostsUrl { get; set; } 
+1

Was soll ich sagen? Was ist Ihr Input, der zusammenpassen sollte? –

+0

Ich möchte für ein Feld eingeben, das mehrere URLs mit Kommas wie folgt akzeptieren kann (https: //www.google.com,https: //www.facebook.com,docs.google.com,google.com) ... –

Antwort

0

Sie müssen nicht für eine einzige Regex gehen. Ich weiß nicht, wie in C# zu programmieren, aber ich kann Pseudocode bereitstellen.

String urls = "url1,url2"; 
Regex validUrlRegex = /^(https?:\/\/)?[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+$/; 
Array urlsArray = urls.split(','); 
Boolean allUrlsArevalid = true; 
for(int i=0; i < urlsArray; i++) { 
if(!urls.match(validUrlRegex)) { 
    allUrlsArevalid = false; 
    break; 
} 
} 

print allUrlsArevalid; 

Wenn Sie für einzelne Regex suchen. Dann

Regex validUrlRegex = "/((?:https?:\/\/)?[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+)/"; 
Regex desiredRegex = validUrlRegex + "(?:(?:,)" + validUrlRegex + ")*"; 
urls.match(desiredRegex); 

Erklärung

Dies ist eine vereinfachte Format-String

"{validUrlRegex}? (: (:,) {ValidUrlRegex}) *"

(?:) ist nicht nicht Klammern erfassen. d. h. alles, was darin ist, wird nicht in dem resultierenden Array gespeichert.

(?:(?:,){validUrlRegex})* Dies entspricht keinem oder mehr Vorkommen von ,someUrl.

+0

einfach kreuzen Sie Ihren Ausdruck mit diesem Link: de.wikipedia.org/wiki/Main_Page – Luqman

Verwandte Themen