Изначально, исключая специфику регулярного выражения, этот код:
if ( ! /.../.test(l.host) )
"если не регулярное выражение (l.host)" или "если l.host не соответствует этому регулярному выражению"
Таким образом, регулярное выражение должно правильно описывать содержимое текста l.host для условного сбоя и, таким образом, избегать выдачи ошибки.
На самом регулярном выражении:
^(.*\.)?tumblr[^.]*$
Это проверка на наличие tumblr
, но только после любой строки, заканчивающейся на .
, которая может существовать:
^ # start of line
( # begin capturing group 1
.* # match any (non-newline) character, as many times as possible, but zero allowed
\. # match a literal .
) # end capturing group 1
? # make whole preceeding item optional
tumblr # match literal text tumblr
[^.]* # match any non . character, as many times as possible, but zero allowed
$ # match end of line
Я думал, что это тестирование, чтобы увидеть, был ли хост tumblr
Да, похоже, что это может быть предназначено для проверки, но если это так, то это неправильный способ сделать это.
Для этого первый бит должен быть чем-то вроде ^(?:[\w-]+\.)?
для захвата буквенно-цифрового субдомена (?:
- это группа без захвата, [\w-]+
- это по крайней мере 1 буквенно-цифровой знак подчеркивания или дефис), а последний бит либо \.(?:com|net|org)$
, либо, возможно, как (?:\.[a-zA-Z]+)+$
, в зависимости от того, насколько гибкой должна быть секция tld.