Есть строка, точнее имя файла. Нужно проверить, чтобы оно следовало хотя бы одному из примеров:
[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
делаю то же самое на своём форуме:
/^\\[(dm|dd|race|shooter|hunter|old)\\]/i
при чисто таком же коде. Что за дела?
Примечание:
не в отдельном, всё в теге <script> код </script>
Примечание:
вынес в отдельный файл и магически заработало. Благодарю
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.