Как мне написать условный оператор с помощью jquery, который проверяет URL страницы или электронное письмо?

#javascript #jquery #regex #url #conditional-statements

#javascript #jquery #регулярное выражение #url #условные операторы

Вопрос:

У меня есть два регулярных выражения для одного поля ввода пользователя, которые должны принимать URL страницы контактов веб-сайта или адрес электронной почты. Как я могу написать это в Jquery или Javascript? Вот мои два регулярных выражения.

 regex for URL "((www.|(http|https|ftp|news|file) ://)[amp;#95;.a-z0-9-] .[a-z0-9/amp;#95;:@=. ?,##%amp;~-]*[^.|'|# |!|(|?|,| |>|<|;|)])",


regex for email "^[w-.] @([w-] .) [w-]{2,4}$",

 error messageelse "You must enter a valid email or you must enter a valid url, which starts with http://. The www prefix is optional.")
 

Комментарии:

1. Это регулярное выражение отклонит множество совершенно правильных адресов электронной почты.

Ответ №1:

Демонстрация — http://jsfiddle.net/A77fD /

Пример —

 var url_regex = /((www.|(http|https|ftp|news|file) ://)[amp;#95;.a-z0-9-] .[a-z0-9/amp;#95;:@=. ?,##%amp;~-]*[^.|'|# |!|(|?|,| |>|<|;|)])/;
var email_regex = /^[w-.] @([w-] .) [w-]{2,4}$/

$('#test').click(function(){
    console.log(url_regex.test($('#test_field').val()));
    console.log(email_regex.test($('#test_field').val()));

    if(!(url_regex.test($('#test_field').val()) || email_regex.test($('#test_field').val()))){
        alert("You must enter a valid email or you must enter a valid url, which starts with http://. The www prefix is optional.")
    }
})
 

Комментарии:

1. Пожалуйста, не заражайте мир еще одним специальным средством проверки электронной почты, которое принимает недопустимые адреса и отклоняет действительные.

2. Не проверял регулярные выражения. Просто ответил на то, что хотел пользователь. Но, конечно, он может улучшить регулярные выражения.

Ответ №2:

используйте regex.test(«url или email»)

 var regexU = /((www.|(http|https|ftp|news|file) ://)[amp;#95;.a-z0-9-] .[a-z0-9/amp;#95;:@=. ?,##%amp;~-]*[^.|'|# |!|(|?|,| |>|<|;|)])/;
var regexEmail = /^[w-.] @([w-] .) [w-]{2,4}$/

function validate() {
    if( regexUrl.test("url") || regexEmail.test("email")) {
    console.log("valid"); 
    } else {
      console.log("You must enter a valid email or you must enter a valid url, which starts with http://. The www prefix is optional.");
    }
}
 

Ответ №3:

Я бы рекомендовал использовать какую-нибудь библиотеку для выполнения ваших проверок. Не нужно каждый раз изобретать велосипед.

У jQuery есть плагин, который может подойти: http://rocketsquared.com/wiki/Plugins/Validation