Я хотел бы объединить две функции регулярных выражений для очистки некоторого ввода textarea. Интересно, если это вообще возможно, или я должен оставить его двумя отдельными (которые работают нормально, но выглядят не так красиво или чисто).
Я настроил так, чтобы они использовали глобальный и многострочный ( /gm
) и заменены ничем (''
). Я пытался использовать скобки и вертикальные / или линии в любой позиции, но это никогда не дает ожидаемого результата, поэтому я могу только предположить, что есть способ, который я упустил или должен оставить его как есть.
Regex 1: /^\s+[\r\n]/gm
Regex 2: /^\s+| +(?= )|\s+$/gm
В настоящее время в JavaScript: string.replace(/^\s+[\r\n]/gm,'').replace(/^\s+| +(?= )|\s+$/gm,'')
Цель состоит в том, чтобы удалить:
- Пустые пробелы в начале и конце каждой строки
- Пустые строки (включая любые в самом начале и конце)
- Двойные пробелы
Без этого в конечном итоге на одной и той же линии. Одиночные разрывы строк (\r\n
) все еще должны быть в конце.
Regex 1 предназначен для удаления любой пустой строки (^\s+[\r\n]
), Regex 2 выполняет обрезку пробелов в начале (^\s+
) и конец (\s+$
) и удаляет двойные (и тройные, четырехкратные и т. д. c) пробелы между (+(?= )
).
Ввод:
Let's
make this
look
a little
nicer
and
more
readible
Вывод:
Let's
make this
look
a little
nicer
and
more
readible
Редактировать: Большое спасибо Wiktor Stribiżew и его комментарию за это полное решение:
/^\s*$[\r\n]*|^[^\S\r\n]+|[^\S\r\n]+$|([^\S\r\n]){2,}|\s+$(?![^])/gm