У меня есть JavaScript, который работает, использует замену регулярными выражениями для изменения содержимого на странице. Тем не менее, у меня проблема с конкретным квантором регулярных выражений. Вся документация, которую я прочитал (и я знаю, что она работает в regex на других языках тоже) говорит, что JavaScript поддерживает кванторы {N}
, {N,}
и {N,N}
. То есть вы можете указать определенное количество совпадений, которое вы хотите, или диапазон совпадений. Например. (zz){5,}
соответствует не менее 10 z в строке, а z{5,10}
соответствует любому числу z от 5 до 10, не более и не менее.Ошибка квантора Javascript RegExp
Проблема в том, что я могу сопоставить точное число (например, z{5}
), но не диапазон. Ближайший я могу понять, что он имеет какое-то отношение к запятой в строке регулярного выражения, но я не понимаю, почему и не могу обойти это. Я попытался выйти из запятой и даже использовать шестнадцатеричную строку unicode для запятой (\u002C
), но безрезультатно.
Чтобы устранить любые возможные недоразумения и задать некоторые из вопросов, заданных в комментариях, вот некоторая дополнительная информация (также найденная в комментариях): Я попытался создать массив всеми возможными способами, включая var = [/z{5,}/gi,/a{4,5}/gi];
, var = [new RegExp('z{5,}', 'gi'), new RegExp('a{4,5}', 'gi')];
, а также var[0] = new RegExp('z{5,}'), 'gi');
, var[1] = /z{5,}/gi;
и т. Д. Массив используется для цикла в виде somevar.replace(regex[i], subst[i]);
.
Возможно, вы захотите опубликовать JS-код, который вы используете, поскольку кванторы диапазона поддерживаются в JS-regex просто отлично. – MooGoo
Отправьте пример кода и сообщите нам, в каком браузере и версии вы его пробовали. – some
Итак, у меня есть массив со значениями, такими как «/ z {5,}/gi», и мой скрипт для-петли через содержимое массива и выполняет «var.replace (regex [i], other [i]); – klanni