0

正規表現を複数の行で機能させようとしていますが、「m」も機能していないようです。したがって、私の正規表現は最初の行で機能し、次の行では機能しません。

4

1 に答える 1

2

この部分をスキップmatchして、すべてを 1 つのステップで実行できます。

> "the  *text* is to be replaced \n by *text*".replace(/\*([\s\S]*?)\*/g, '<i>$1</i>');
"the  <i>text</i> is to be replaced \n by <i>text</i>"
  • .任意の文字に一致しますが、改行は除外されます。改行を含む[\s\S]任意の文字に一致します。

  • 検索正規表現を に変更しました\*([\s\S]*?)\*。これは、アスタリスクの間のものと貪欲に一致しません。

  • 置換文字列は<i>$1</i>. $1は、テキストである最初のキャプチャ グループの内容に置き換えられます。

また、Markdown を HTML に変換しようとしているように見えるので、既製の JS コンバーターを使用してみてください: http://www.showdown.im/


次のように使用できます。

var str = "the  *text* is to be *replaced \n by* *text*";

alert(str.replace(/\*([\s\S]*?)\*/g, '<i>$1</i>'));
于 2012-10-09T03:03:11.970 に答える