以下の正規表現は、単一のアスタリスク文字で囲まれたすべてのシーケンスに一致します。これは、Markdown でイタリック体のテキストがどのように強調されるかです。強調に使用されるアスタリスクを含むテキストを書式設定したい。それに加えて、シーケンス内に独立したアスタリスクを許可します。例*This is italic text\n with * in between*
。
/\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*/g
さらに、Markdown では、太字のテキストは 2 つのアスタリスク文字によって非常によく似た方法で強調されます。それらを一致させるために、次の正規表現を使用します。
/\*\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*\*/g
どちらも独自に機能しますが、一緒に適用すると、太字テキストの内部もイタリック テキストとして検出されます。したがって、外側のアスタリスクを除いて、書式設定されたテキストは太字と斜体の両方になります。これを修正するには、斜体のシーケンスを 2 番目のアスタリスクのペアで囲むことは許可されていないことを表現する必要があります。
問題は、[^\*]
他の文字が必要であるため、文字がまったく必要ないことです。上記の最初の正規表現が、検索文字列の最初または最後で一致しているにもかかわらず、それらが追加のアスタリスクで囲まれている場合、一致しないことをどのように表現できますか?
注意として、私は JavaScript を使用しているため、後読みは利用できません。