При работе с многострочным текстом точка в регулярных выражениях обозначает любой символ, но только не символ новой строки.
Допустим, нужно в многострочном тексте заменить [u] ... [/u]
на тэг подчеркивания: <u>
. Такой код не работает:
function bbtagit(text) { text = text.replace(/[u](.*?)[/u]/gim, '<u>$1</u>') return text } var line = "[u]мойn текст[/u]" alert( bbtagit(line) )
В javascript в многострочном режиме (его включает флаг m) изменяется значение только символов ^ и $ (они обозначают начало и конец строки, а не всего текста). Точка обозначает любой символ кроме символа новой строки. Чтобы обозначить любой символ, включая символ новой строки, следует использовать выражение [sS]:
function bbtagit(text) { text = text.replace(/[u]([sS]*)[/u]/gim, '<u>$1</u>') return text } var line = "[u]мойn текст[/u]" alert( bbtagit(line) )