При работе с многострочным текстом точка в регулярных выражениях обозначает любой символ, но только не символ новой строки.
Допустим, нужно в многострочном тексте заменить [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) )