#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/
Комментариев нет:
Отправить комментарий