Мы использовали следующий js/regex для нахождения и заменения всех неалфавитно-цифровых символов кроме - и +
outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");
Однако это не работает полностью - это не заменяет ^ и | символы. Я не могу не задаться вопросом - ли это что-то, чтобы сделать с ^ и | используемый в качестве метасимволов в самом regex.
Я попытался переключиться на использование [\W|^+|^-]
, но это заменяет - и +. Я думал, что возможно предварительное утверждение может быть ответом, но я не очень уверен, как реализовать их.
Кто-либо понял, как выполнить это?
Классы символов не делают чередования, поэтому |
является буквальным, а ^
должен быть в начале класса, чтобы вступить в силу (иначе он воспринимается буквально. )
Используйте это:
[^\w+-]+
(Также, если -
не последние, их нужно экранировать как \-
внутри класса символов - так что будьте осторожны, если в список исключений могут быть добавлены дополнительные символы).
Вы также можете сделать это с отрицательной задержкой, например, так:
(?![+-])\W
Примечание: Вам не нужны *
или +
после \W
, поскольку задержка применяется только к непосредственно следующему символу (а флаг g
заставляет замену повторяться до тех пор, пока не будет сделано).
Также обратите внимание, что \w
и \W
рассматривают _
как символ слова. Если это нежелательно, то для замены можно использовать (?![+-])[\W_]
(или использовать явные диапазоны в первых выражениях).