Это регулярное выражение не работает в Firefox, но работает в IE.Регулярное выражение Javascript не работает в Firefox
function validate(x) {
return /.(jpeg|jpg)$/ig.test(x);
}
Может кто-нибудь объяснить почему?
Это регулярное выражение не работает в Firefox, но работает в IE.Регулярное выражение Javascript не работает в Firefox
function validate(x) {
return /.(jpeg|jpg)$/ig.test(x);
}
Может кто-нибудь объяснить почему?
Если вы тестируете только с именем файла, а затем установить «г» флаг для глобальных не имеет особого смысла, так как вы соответствия в конце строки в любом случае - я побежал следующее:
function validate(x) {
return /\.(jpeg|jpg)$/i.test(x);
}
var imagename = 'blah.jpg';
alert (validate(imagename)); // should be true
imagename = 'blah.jpeg';
alert (validate(imagename)); // should be true
imagename = 'blah.png';
alert (validate(imagename)); // should be false
все три теста вышли как ожидалось в FF.
Что касается «как это работает» - регулярные выражения можно получить довольно сложно - но я объясню детали выше схеме:
так ..
/\.(jpeg|jpg)$/i
означает "строка заканчивается либо .jpeg или .jpg - игнорирование дела"
так ... .JPEG, .jpg, .jpeg, и т.д. ... все пройдет сейчас ...
Или, читая прямо из RE, он соответствует строке «с точкой, за которой следуют либо« jpeg », либо« jpg », все в конце и игнорируя случай« – outis
спасибо многому человеку, я просто удалил g и добавил вперед slash infront of «.» .. он отлично работает человек – jamal
«g» означает «глобальный», а не «жадный» в соответствии с разделом «Спецификация языка ECMAScript» 15.10.4.1. Тем не менее, он *, вероятно, здесь не нужен, поэтому его удаление было бы хорошим планом. – Tim
В выражениях регулярных выражений "." само по себе означает «любой символ». Ты имел ввиду "\." означать «период»?
Функция использует шаблон regular expression.(jpeg|jpg)$
для проверки строк. Похоже, что цель состоит в том, чтобы проверить имена файлов, чтобы убедиться, что они имеют расширение либо jpg
, либо jpeg
.
Как указал Джеймс Бейли, есть ошибка в том, что период должен быть экранирован обратным слэшем. Период в регулярном выражении будет соответствовать любому символу. Таким образом, как показано, шаблон будет соответствовать как imagexjpg
, так и image.jpg
.
Обновите тестовый корпус * valid * (тот, который показывает «сбойные» входы). Благодарю. – 2009-11-04 01:39:21
Можете ли вы объяснить, как работает этот код? – jamal