Как проверить строку в Javascript?

программирование программы php JavaScript

Есть строка, точнее имя файла. Нужно проверить, чтобы оно следовало хотя бы одному из примеров:

[dm]*
[dd]*
[race]*
[shooter]*
[hunter]*
[old]*

Где квадратные скобки обязательны, * - любой текст, текст внутри скобок должен тоже полностью соответствовать.

Как бы это сделать? Пробовал вида:

if (str.match("/[//dm?dd?race?shooter?hunter?old//]/*")) { ... }

Но не работало по какой-то причине. Ужасные паттерны в джаваскрипте.

Примечание:
@holden321,

var lowstr = filename.toLowerCase();
var patterns=['dm','dd','race','shooter','hunter','old'];
var match = lowstr.match(new RegExp("^("+patterns.join('|')+")",'i'));
if(match) {
$("#status1").append("<div id='uploaderror'>Matches "+match+"</div><br>");
} else {
$("#status1").append("<div id='uploaderror'>Doesnt match "+match+"</div><br>");
}

Пример названия: [DM]GermOFtPolakMalyFtMoonlightFtCooN-ShadowLander.zip

Возвращает: Doesnt match null, где null - результат match

Примечание:
var lowstr = filename.toLowerCase();
var patterns=['dm','dd','race','shooter','hunter','old'];
var pat = new RegExp("^(\["+patterns.join('\]|\[')+"\])",'i');
var match = lowstr.match(pat);
if(match) {
$("#status1").append("<div id='uploaderror'>Matches "+lowstr+" and "+match+"</div><br>");
} else {
$("#status1").append("<div id='uploaderror'>Doesnt match "+lowstr+" and "+match+"</div><br>");
}

Результат с тем же названием:

Doesnt match [dm]germoftpolakmalyftmoonlightftcoon-shadowlander.zip and null

Примечание:
И снова мимо.

var lowstr = filename.toLowerCase();
var patterns=['dm','dd','race','shooter','hunter','old'];
var pat = new RegExp("^\\[("+patterns.join('|')+")\\]",'i');
$("#status1").append("<div id='uploaderror'>Test "+pat+"</div><br>");
var match = lowstr.match(pat);
if(match) {
$("#status1").append("<div id='uploaderror'>Matches "+lowstr+" and "+match+"</div><br>");
} else {
$("#status1").append("<div id='uploaderror'>Doesnt match "+lowstr+" and "+match+"</div><br>");
}

Результат:

Test /^\\[(dm|dd|race|shooter|hunter|old)\\]/i

Doesnt match [dm]germoftpolakmalyftmoonlightftcoon-shadowlander.zip and null

Примечание:
Делаю alert(pat); на http://jsfiddle.net/v6c69/ и получаю это:

/^\[(dm|dd|race|shooter|hunter|old)\]/i

делаю то же самое на своём форуме:

/^&#092;&#092;[(dm|dd|race|shooter|hunter|old)&#092;&#092;]/i

при чисто таком же коде. Что за дела?

Примечание:
не в отдельном, всё в теге <script> код </script>

Примечание:
вынес в отдельный файл и магически заработало. Благодарю
Ответы:
var patterns=['dm','dd','race','shooter','hunter','old'];
if(str.match(new RegExp("^(\["+patterns.join('\]|\[')+"\])",'i'))) { ... }
Примечание №2
>И снова мимо.
>при чисто таком же коде. Что за дела?
JavaScript не в отдельном файле? В смысле к коде html?


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.