Ошибка Firefox с позитивными взглядами на регулярные выражения? - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь удалить пробел перед < символами и > символами в строке. Поэтому я использовал regex101, чтобы выяснить, как это сделать, и придумал эти два регулярных выражения:

/ ?(?=<)/g
/(?<=>) /g

Я знаю, что Firefox не поддерживает отрицательные взгляды из-за ES2018, но согласно regex101 этооба позитивных взгляда. Тем не менее, когда я пытаюсь это сделать, Firefox возвращает:

SyntaxError: недопустимая группа регулярных выражений

Хотя они прекрасно работают в Chrome.

Рабочий пример (запуститьв Chrome и Firefox):

let str = "this is <some> test";

let patten1 = new RegExp(' ?(?=<)','g');
let patten2 = new RegExp('(?<=>) ','g');

str = str.replace(patten1, '');
str = str.replace(patten2, '');

console.log(str);

Итак, мои вопросы: действительно ли это ошибка? И если да, то есть ли другое решение моей проблемы, которое будет работать?

1 Ответ

1 голос
/ 06 октября 2019

Я предполагаю, что, возможно, вы захотите написать простое выражение, которое было бы несколько похоже на:

\s*(<[^>]*>)\s*
Демонстрация 1

или

\s{0,1}(<[^>]*>)\s{0,1}
Демо 2

и замените его на $1.

const regex = /\s{0,1}(<[^>]*>)\s{0,1}/g;
const str = `this is <some> test`;
const subst = `$1`;

const result = str.replace(regex, subst);

console.log(result);

Если вы хотите упростить / изменить / изучить выражение, это объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в этой ссылке , как она будет сопоставляться с некоторыми примерами ввода.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...