2017-02-16 11 views
0

Я пробовал следующее Regex для проверки нескольких URL-адресов, но он не работает должным образом.Как проверить несколько URL-адресов, разделенных запятыми, используя регулярное выражение в .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

Что вы хотите сказать? Каков ваш вклад, который должен соответствовать? –

+0

Я хочу ввести поле, которое может принимать несколько URL-адресов с разделенной запятой (https: //www.google.com,https: //www.facebook.com,docs.google.com,google.com) ... –

ответ

0

Вам не нужно искать ни одного регулярного выражения. Я не знаю, как закодировать код на C#, но я могу предоставить псевдокод.

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; 

Если вы ищете одно регулярное выражение. Затем

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

Объяснение

Это упрощенная строка формата

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

(?:) не не- захватывая скобки. то есть что-либо внутри него не будет сохранено в результирующем массиве.

(?:(?:,){validUrlRegex})* это будет соответствовать нулю или более вхождениях ,someUrl.

+0

просто перекрестите свое выражение по этой ссылке: ru.wikipedia.org/wiki/Main_Page – Luqman