URL регулярного выражения javascript - PullRequest
0 голосов
/ 03 декабря 2018

О проверке формата URL: регулярное выражение с использованием:

const regex = /^(?:(?:https?):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|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-zA-Z0-9]-*)*[a-zA-Z0-9]+)(?:\.(?:[a-zA-Z0-9]-*)*[a-zA-Z0-9]+)*(?:\.(?:[a-zA-Z]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;

должно пройти:

const string1 = 'http://www.example.com'

const string2 = 'http://example.com'

const string3 = 'www.example.com'

const string4 = 'example.com'

должен потерпеть неудачу: const string5 = 'www.example' const string6 = 'http://www.example'

но string5 , string6 все еще проходит, я просто новичок в регулярном выражении.

Ссылка на ссылку: https://jsbin.com/hegocoyoge/edit?js,console

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Я настоятельно рекомендую использовать некоторую библиотеку.Например валидатор .Авторы уже решили эти проблемы.Если вы все еще хотите реализовать свой собственный (нечитаемый) regEx, попробуйте обратиться к источнику некоторой библиотеки isEmail, например: https://github.com/chriso/validator.js/blob/master/src/lib/isEmail.js

0 голосов
/ 03 декабря 2018

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

^(http:\/\/)?(www\.)?\w+\.\w{1,3}$

Демо

0 голосов
/ 03 декабря 2018

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

var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
var t = 'www.google.com';
if (t.match(regex)) {
  console.log("This is a valid url");
} else {
  console.log("This is not a valid url");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...