2015-05-25 2 views
1

Я пытаюсь регулярное выражение для проверки URL.Регулярное выражение неправильное соответствие

var url = "https://www,google.com"; 
var urlRegex = /(https|http)?:\/\/(?:\w[\-\w.]+)(?:\/[\-\w+&@#\/%=~_|!:,.;]*)?(?:\?[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?/i; 
var result = urlRegex.test(url); 

поэтому я получаю «результат» как истинный, но я должен получить false, поскольку «url» содержит запятую. Просьба помочь.

ответ

2

Добавить анкеры (^ для начала строки, и $ для конца строки):

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

См demo

+0

awesome. спасибо – user3816152

+0

Добро пожаловать. Если вам нужно найти URL-адреса внутри большего текста, вам нужно будет использовать '\ b' вокруг вашего шаблона и добавить в начале отрицательный прогноз вперед:' (?! \ S *, \ b) '. –

2

Вы получаете верно, так как ваше регулярное выражение частично совпадает.

Использование ^(https|http)?:\/\/(?:\w[\-\w.]+)(?:\/[\-\w+&@#\/%=~_|!:,.;]*)?(?:\?[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?$

вместо этого.

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