2013-10-14 5 views
0

Я следующий код (currHost это имя хоста):Regex для имени хоста

if (currHost.match(/(alpha|beta|test|dev|load|local)\./)) 

, но мне нужно, чтобы добавить дополнительные условия, такие как

  • файл:

    • .od *. (* подстановочный знак)
    • dev-wa.
    • .sq *. (* является подстановочным знаком)
    • .hbox.

Пример MATCHING URLS:

  • файл: // с: blahblahblah
  • www.sqc.mydomain.com
  • www.sqa.mydomain.com
  • WWW .odd.mydomain.com
  • www.odp.mydomain.com
  • www.hb ox.mydomain.com
  • dev-wa.mydomain.com

Пример НЕ MATCHING ССЫЛОК:

  • www.sqcmydomain.com
  • www.sqamydomain.com
  • WWW. oddmydomain.com
  • www.odp.mydomain.com
  • www.hboxx.mydomain.com
  • dev-waa.mydomain.com

не уверен, как подойти к этому?

Спасибо!

+2

Ваш вопрос не очень ясен. Можете ли вы показать нам правильную строку, которая должна соответствовать? Также устанавливайте правила как пункты маркера. Это будет легче понять вопрос. –

+0

Имена хостов не могут содержать: в них. Вы сопоставляетесь со всем URL-адресом или просто с именем хоста? –

+0

Создание матчей против хоста, но я предполагаю, что мне нужно использовать document.location.href вместо имени хоста, поскольку локальные файлы («файлы:») не будут включены в document.location.hostname –

ответ

0
if (currHost.match(/(alpha|beta|test|dev|load|local|file:|dev-wa|od\*|hbox)?\./)) 

Просто добавьте, как указано выше? Или вы имеете в виду что-то еще? Я добавил косую черту из астерикс. Добавлен вопросительный в конце, чтобы сделать его ungreedy

+2

'dev *' и 'od *' будут соответствовать хостам типа 'de',' devvv', 'od' и' oddd'. Думаю, это не то, что нужно OP. –

+0

Вопросительный знак вне выражения, это «недействительный JS. –

+0

изменил его обратно внутрь и избежал звездочки до того, что я могу обозначить OP – Martijn

1

Для вашего файла совпадает вы можете просто использовать

document.location.protocol == 'file:' 

и выражение, которое вы ищете,

curHost.match(/(alpha|beta|test|dev|load|local|\.od.*|dev-wa|\.sq.*|\.hbox)\./) 

Просто помните, что это выражение будет также соответствовать www.od.mydomain.com и oddmydomain.com, так как это также действительный матч. Если вы этого не хотите, вам нужно либо указать полное выражение (с частью .com), либо указать количество символов после части od/sq.Например,

curHost.match(/(alpha|beta|test|dev|load|local|\.od.{1}|dev-wa|\.sq.{1}|\.hbox)\./) 

Для одного письма.

Если вы хотите точно указать эту строку только в начале домена, с или без www. вы можете использовать

curHost.match(/^(www\.)?(alpha|beta|test|dev|load|local|od.+|dev-wa|sq.+|hbox)\./) 
+0

Только что вернулся, чтобы ответить, но это делает трюк. Вы можете добавить '^' перед первой группой, чтобы убедиться, что она должна начинаться с них. Чуть более безопасно – Martijn

+0

@ Tssanyo Tsanev - curHost.match (/ (alpha | beta | test | dev | load | local | \ .od. {1} | dev-wa | \ .sq. {1} | \ .hbox) \ ./), кажется, работает нормально! Большое спасибо! –

+0

@Martijn Я сделал, на третьем примере, но также были примеры с www. впереди, поэтому я не хотел, чтобы выражение было слишком строгим. –

Смежные вопросы