我希望我的正则表达式忽略包含两个 * 而不是一个 * 的字符串:
**hello**
*hello*
我的正则表达式捕获两个 *hello*
。我怎样才能只捕获*hello*
而不捕获**hello**
?
这是我当前的正则表达式:
\*{1}?[^\*|\s]{1,}?\*{1}?
编辑:我想做的事情:
我正在制作一个 Chrome 扩展程序,将 *hello*
转换为 hello 并将 **hello**
转换为 hello 。但是,由于正则表达式使 **hello**
与 *hello*
重叠,因此会将粗体内容变为斜体。我怎样才能阻止它?
最佳答案
这样做的关键是替换 \*\*([^*]*)\*\*
与 <b>\1</b>
然后替换 \*([^*]*)\*
与 <i>\1</i>
,或 Strong/em,CSS 样式,无论您实际使用什么来更改字体。
要覆盖 i 嵌套在粗体标签中(反之亦然),您可以将其用于粗体正则表达式: \*\*([^*]*(\*[^*]*\*[^*]*))\*\*
关于javascript - 正则表达式不捕获字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29976221/