2013-06-13 2 views
0

Можно ли проверить допустимый URL-адрес формата в момент ввода пользователя в текстовое поле?jquery проверить URL-адрес WHILST, который будет использоваться

формат адреса может быть:

barfly.com 
http://barfly.com 
https://barfly.com 
www.barfly.com 

его важно, что TLD (суффикс) реально избежать: http://barfly.boo

плохо быть пересматривают сценарий периодически принимать во внимание новые TLD, которые становятся популярными (например, .tv, .mobi, .firm.in и т.д ...

мой код до сих пор выпускающий через частичного совпадения, как:

www.barf 
http://www.barf 

Я должен полностью совпадать с URL, а не только его части

Мой код до сих пор является:

$('#txtbxhost').live('input', function() { 

    var inp = $("#txtbxhost").val(); 
    var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.([a-z]+\.))"); 

    if (urlregex.test(inp)) 
    { 
    // keep showing ok label 
    } 
    else { 
    // hide ok label 
    } 
    }) 

ответ

1

Во-первых, $.live был устаревшим JQuery 1.7, так что если вы используете 1.7 или более поздней, используйте вместо этого $.on.

Чтобы получить лучшее URL-адрес регулярного выражения, попробуйте один из них: http://mathiasbynens.be/demo/url-regex. Вы могли бы также использовать diegoperini, так как это наиболее точный:

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS 

Это может быть излишним за то, что вы пытаетесь сделать, хотя. Просто выберите тот, который, по вашему мнению, будет охватывать большинство ваших случаев использования.

+0

все эти символы требуются - я думал, что шаблон регулярных выражений закончился $. – gone

+0

Сортировка использовала библиотеку Spoon Library (979 символов), модифицировала ее, чтобы распознать «www.». строки также - отлично - спасибо и за хэдз-ап на обесцененный .live() func using.on now – gone

Смежные вопросы