javascript - 正则表达式不捕获字符

标签 javascript regex

我希望我的正则表达式忽略包含两个 * 而不是一个 * 的字符串:

**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/

相关文章:

javascript - Three.js 在鼠标滚轮上平滑移动相机

javascript - 反正有没有在angularjs模板中循环?

javascript - 为输入范围生成红色和绿色之间的颜色

javascript - 调整背景图片大小

javascript - 在单个 onClick 事件上设置状态并运行函数

Java - 异常处理 - 正则表达式 - 匹配方法不适用于扫描仪输入

regex - 语言和正则表达式的制定

regex - 将键和值从 Perl 正则表达式传递到哈希

java - 尝试理解和重现正则表达式模式

regex - 如何提取 Perl 正则表达式中第 n 次出现的匹配项?