Точка в регулярном выражении для многострочного текста в Javascript

При работе с многострочным текстом точка в регулярных выражениях обозначает любой символ, но только не символ новой строки.

Допустим, нужно в многострочном тексте заменить [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) )

(источник http://javascript.ru/tutorial/regexp-specials)

Опубликовано в рубрике JavaScript | с метками . |

Еще записи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *