#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}
на то, что вам нужно. Я бы предложил использовать этот сайт