正则表达式,匹配所有内容,双星号除外
Regex, match everything, except double asterisks
我正在创建一个文本编辑器界面,用户可以在其中设置文本格式,他可以在旁边的 div 中看到修改。
为了突出显示一堆文本,我保留了双星号如下** 文本 **,就像Whosebug中的here一样。
我的代码如下所示:
replace(/\*{2}([^\*]*)\*{2}/g, "<strong></strong>")
但我的问题是,如果文本中包含星号,则可以看到以下输出:
** 文字* **,
而不是text*
如何否定匹配的双字符而不破坏输出中的 HTML 标签?
您可以处理单个星号后跟至少一个其他字符,只需添加 (?:\*[^*]+)*
:
yourstr = yourstr.replace(/\*\*([^*]*(?:\*[^*]+)*)\*\*/g, "<strong></strong>");
注意在字符class中转义*
是没用的,写\*{2}
比\*\*
长。
我正在创建一个文本编辑器界面,用户可以在其中设置文本格式,他可以在旁边的 div 中看到修改。
为了突出显示一堆文本,我保留了双星号如下** 文本 **,就像Whosebug中的here一样。
我的代码如下所示:
replace(/\*{2}([^\*]*)\*{2}/g, "<strong></strong>")
但我的问题是,如果文本中包含星号,则可以看到以下输出:
** 文字* **,
而不是text*
如何否定匹配的双字符而不破坏输出中的 HTML 标签?
您可以处理单个星号后跟至少一个其他字符,只需添加 (?:\*[^*]+)*
:
yourstr = yourstr.replace(/\*\*([^*]*(?:\*[^*]+)*)\*\*/g, "<strong></strong>");
注意在字符class中转义*
是没用的,写\*{2}
比\*\*
长。