Регулярное выражение проверки URL javascript - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над проверкой URL с помощью Javascript. Здесь я попробовал регулярное выражение, которое удовлетворяет все мои потребности, кроме одного. Я хочу получить результат false, когда ввод отличается от «.com». В текущей ситуации для ".comm" отображается true.

var a=["https://www.example.com","https://www.example.com/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share","https://www.example.commmmm/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share"];
var re=/^((https):\/\/)?(www.)[a-z0-9]+(\.(com))+(.*)?$/;
a.map(x=>console.log(x+" => "+re.test(x)));

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Вы можете решить эту проблему, указав, что сразу после com может быть что угодно, начинающееся с sla sh или вопросительного знака (так как это также допустимый случай). Более того, я думаю, вам также следует добавить - к той части, где вы сопоставляете доменное имя, поскольку это также допустимый символ в доменных именах.

Здесь я создал фрагмент с большим количеством тестовых примеров:

var a=["https://www.ex-ample.com", "https://www.example.com", "https://www.example.com?ala=makota","https://www.example.com/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share","https://www.example.commmmm/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share"];
var re=/^((https):\/\/)?(www.)[a-z0-9-]+(\.(com))+(\/.*|\?.*)?$/;
a.forEach(x=>console.log(x+" => "+re.test(x)));
1 голос
/ 26 мая 2020

Вы можете сделать это, настаивая на чем-либо после .com, начинающегося с sla sh. Это можно сделать, вставив sla sh в часть (.*)?, как это (\/.*)?, как в приведенном ниже фрагменте. Здесь говорится: «после .com не может быть ничего или что-либо, начинающееся с sla sh». Обратите внимание, что sla sh необходимо экранировать с помощью backsla sh.

var a=["https://www.example.com","https://www.example.com/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share","https://www.example.commmmm/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share"];
var re=/^((https):\/\/)?(www.)[a-z0-9]+(\.(com))+(\/.*)?$/;
a.map(x=>console.log(x+" => "+re.test(x)));
0 голосов
/ 26 мая 2020

Надеюсь, я правильно понял вопрос.

Попробуйте следующий шаблон регулярного выражения:

var re=/^((https):\/\/)?(www.)[a-z0-9]+(\.(com))+(\/.*)?$/;

var a=["https://www.example.com","https://www.example.com/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share","https://www.example.commmmm/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share"];
var re=/^((https):\/\/)?(www.)[a-z0-9]+(\.(com))+(\/.*)?$/;
a.map(x=>console.log(x+" => "+re.test(x)));

Я проверил ваши тестовые примеры, и они работают нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...