javascript - 运行正则表达式替换,同时忽略(但保留)某个字符

标签 javascript regex

我认为用一些例子更容易解释,所以......

"*X*helXlo** my \\X world" => "<b>*X*helXlo**</b> my \\X world"
"**helXlo** my \\X world"  => "<b>hello</b> my \\X world"

我想要类似的东西

str.replace(/(X)?\*(X)?\*(.*)\*(X)?\*(X)?/g, "<b>$1*$2*$3*$4*$5</b>");

但理想情况下不那么难看(看起来更像自然的 replace(/(\*\*.*\*\*)/g, "<b>$1</b>") )。这可能吗?

最佳答案

如果我明白您的要求,那么您绝对不需要所有这些组。你可以这样做:

str.replace(/X?\*X?\*.*\*X?\*X?/g, "<b>$&</b>")

本质上是相同的模式,只是没有组。 $& 表示整个匹配的子字符串。

或者,您可以将其写为:

str.replace(/(X?\*){2}.*(\*X?){2}/g, "<b>$&</b>")

关于javascript - 运行正则表达式替换,同时忽略(但保留)某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808137/

相关文章:

javascript - 如何按时间打开和关闭注册表

regex - sed 替换点点斜杠,但 e s 斜杠被替换

javascript - 如何替换 javascript 字符串中的前三个连字符?

html - Perl:从字符串中删除剩余的 anchor 标记

Javascript 正则表达式问题土耳其字符

javascript - 设置间隔的 ID。它是如何工作的?

javascript - 输入字段值不应大于其他字段值

javascript - Leaflet.js 和 JSON 数据 : optimization and performance

javascript - 如何在 ReactJS 中访问选中的元素?

javascript - 获取多个字符串之间的字符串,即 HTML 标签