Обнаружение ключевого слова в URL

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Я хочу обнаружить что-то вроде этого:

 http://xxx.imageshack.com/xx/xx.xx
  

x — это произвольное количество букв длиной. Также это может быть http://xxx.imageshack.com/xxx.xxx или http://xx.imageshack.com/xxx/xxx.xxx . Как мне это сделать в Javascript?

В конце концов, я хочу убедиться, что сайт является imageshack, а не http://xxx.randomsite.com/xxx , поэтому слово между *._.com имеет решающее значение.

Я пытаюсь это

 if (!/^http:..[^/] imageshack. /. $/i.test(this.src)){
    alert(this.src);
}
  

Это не работает должным образом.
Мне просто нужен код, который входит в инструкцию if, или подсказки, чтобы исправить это.Спасибо!

Ответ №1:

Я думаю, это то, что вам нужно.

 /^http://[a-z]{2,3}.imageshack.com/([a-z]{3}/)?[a-z]{3}.[a-z]{3}$/i.test( this.src )
  

Комментарии:

1. Спасибо, но это не работает. Я вставил $ before $i.test(this.src) кстати. Я получал все URL-адреса, включая те, которые я хотел игнорировать (те, которые были правильными), но с этим я вообще ничего не получаю.

2. @illusionist, я забыл исключить косую черту при проверке подкаталога, вероятно, поэтому это не удалось (но вы должны были видеть ошибку js). Я также добавил в вашем $ до конца. Я протестировал это в Regex Coach на основе ваших требований, и оно проходит оба.

3. спасибо, Кевин, что, если в xxx тоже есть цифры? Означает ли [a, z]{2,3}, что это может быть от a до z длиной 2 или 3? Что, если я хочу сделать длину 0-0 с помощью комбинации [a, z] и [0,9]

4. @Illusionist, символы подчеркивания также разрешены?

5. @Illusionist, [a,z]{2,3} означает любую комбинацию букв от а доя 2 или 3 раза. Если вы хотите добавить только числа, вы могли бы сделать это [a-z0-9]{2,3} . Если вы хотите / нуждаетесь в увеличении количества совпадений, вы бы изменили {2,3} на то, что вам нужно. Я бы предложил использовать этот сайт