JavaScript如何将字符串中的下划线替换为成对的<em>闭合标签
解决方法
你之前使用replaceAll会把所有匹配到的下划线统一替换为相同的内容,所以无法实现成对替换为开闭标签的需求,推荐使用正则捕获组的方式实现:
var Str = "_Hello_"; // 正则匹配成对下划线,捕获中间内容后拼接开闭标签 var newStr = Str.replace(/_(.*?)_/g, '<em>$1</em>'); console.log(newStr); // 输出结果为 <em>Hello</em>
代码说明
- 正则
/_.*?_/g中:- 首尾的
_匹配目标下划线 .*?是非贪婪匹配,会尽可能短的匹配两个下划线之间的内容- 外层的括号
()会把中间匹配到的内容捕获为分组1
- 首尾的
- 替换值中的
$1就代表第一个分组捕获到的内容,前后拼接<em>和</em>就可以实现你要的效果
如果存在多组成对下划线的场景也可以正常处理,比如输入_Hello_ _World_,替换后会得到<em>Hello</em> <em>World</em>。
内容的提问来源于stack exchange,提问作者Veer Thakrar
相关产品推荐
相关产品推荐

