Примените регулярное выражение проверки URL в списке через запятую - PullRequest
1 голос
/ 03 мая 2019

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

/^((((.*):\/\/)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';\/?:@&=+$,A-Za-z0-9])+)([).!';\/?:,][[:blank:]])?$/i.test( value );

Это работает, как и ожидалось, когда я предоставляю один URL.Мои данные будут состоять из нескольких URL-адресов, разделенных запятыми, и я хотел бы применить приведенное выше регулярное выражение ко всем отдельным URL-адресам в списке, разделенном запятыми.Я также хотел бы предотвратить использование определенных строк в URL-адресе (например, «имя», «город» и т. Д.)

, например

Какие изменения необходимо внести в мое регулярное выражение для достижения указанных выше результатов?

1 Ответ

0 голосов
/ 03 мая 2019

Поскольку ваше регулярное выражение работает для отдельных URL-адресов, вы можете настроить его для работы со списками, используя комбинацию split и каждые . Ниже мое решение:

const isClean = str => ["name", "city"].every(word => !str.includes(word));
const isValid = input =>
  input
    .split(",")
    .every(
      value =>
        /^((((.*):\/\/)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$/i.test(
          value
        ) && isClean(value)
    );

console.log(isValid("http://localhost:8080")); // true
console.log(isValid("https://something.com")); // true
console.log(isValid("http://localhost:8080,something.com,something2.com")); // false
console.log(isValid("http://localhost:8080,http://something.com,http://something2.com")); // true
console.log(isValid("http://name.com")); // false
console.log(isValid("http://city.com")); // false

Запустить на CodeSandbox

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