Страницы

Поиск по вопросам

суббота, 30 ноября 2019 г.

Как отделить номер захватываемой группы от цифры?

#javascript #регулярные_выражения


Пример:

"abcdefghijklm".replace(/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/, "$11")


Получается k.

Что надо сделать, чтобы получить конкатенацию первой группы и цифры 1, т. е. a1?
    


Ответы

Ответ 1



Забавно. Не нашел ответа в документации, но нашел его методом научного тыка. Из документации мне стало известно, что JavaScript поддерживает от 0 до 99 сохраняющих групп. Когда я наобум попробовал "abcdefghijklm".replace(/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/, "$011") то увидел a1 То есть встретив $01, $02 ... $09 JavaScript понимает их как группы $1, $2 ... $9.

Ответ 2



Если я правильно понял вопрос - вам нужен $'1 или $`1 "abcdefghijklm".replace(/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/, "$1$'1") И если кому будет интересно: "$1$$1" => "a$1" "$&" => "abcdefghijklm"

Ответ 3



Группы, кстати, можно делать незахватываемыми "abcdefghijklm".replace(/(.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)(?:.)/, '$11') => a1

Ответ 4



Есть в юникоде символы с кодами uFF10-uFF19 подозрительно похожие на цифры 0-9. Можно вместо цифры воспользоваться таким кодом. "abcdefghijklm".replace(/(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)/, "$1\uFF11") http://jsfiddle.net/c5do1vpf/

Комментариев нет:

Отправить комментарий