Подтвердить что ты не робот

Регулярное выражение для проверки URL-адресов

Я написал регулярное выражение для проверки URL-адреса, который может быть похож на

google.com

www.google.com

http://www.google.com

https://www.google.com

Я использовал

Regex urlRx = new Regex(@"^(http|ftp|https|www)://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$", RegexOptions.IgnoreCase);

Он работает для http и https.It не работает для google./com и www.google.com.

Пожалуйста, помогите мне решить эту проблему.

Спасибо

4b9b3361

Ответ 1

нет необходимости в регулярном выражении IMHO - попробуйте

Uri.IsWellFormedUriString(YourURLString, UriKind.RelativeOrAbsolute)

См. MSDN

Ответ 2

Поместите раздел протокола в необязательную группу, т.е. ()?:

^((http|ftp|https|www)://)?([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$

Ответ 3

Я получил этот код из jquery.validation(сделал некоторые изменения)

bool isValid = (Regex.IsMatch(значение, @ "(((([az] |\d | - |. || ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF] ) | (% [\ да-е] {2}) | [\ $& '() * +, =] |?:) * @) (((\ d | [1-9]\d | 1\д\д | 2 [0-4]\д | 25 [0-5]) (\ д |. [1-9]\д | 1\д\д | 2 [0-4]\д | 25 [0-5]) (\ д |. [1-9]\д | 1\д\д | 2 [0-4]\д | 25 [0-5]) (\ д |. [1 -9]\д | 1\д\д | 2 [0-4]\д | 25 [0-5])) | ((([AZ] |\д | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) | (([AZ] |\д | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([AZ] |.\д || || ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([AZ] |\д |. [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))) + (([AZ] | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) | (([AZ] | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ( [AZ] |\d | -. | | _ | ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([AZ] | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))) (:.?.\d *)) (/((([AZ] |\d || || ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) | (% [\ да-е] {2}) | [\ $& '() * +, =] |: | @) + (/(([AZ] | \. d || || ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) | (% [да-е \] {2}) | [\ $&! '() * +, =] |: | @)))) (\ ((([AZ] |\d || || ~ | [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0??. -\uFFEF]) | (% да-е [\] {2}) | [\ $& '() * +, =] |: | @) | [\ uE000-\uF8FF] |/|!? \) *) (# ((([AZ] |?\d || || ~ |. [\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) | (% [\ da- е] {2}) | [\ $& '() * +, =] |!? | @) |/| \) *) $" ));

Я искал почти целый день, и это лучшее, что я нашел. Это всего лишь несколько действительных образцов:

Ответ 4

^(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?