js匹配html标签 镶套,JavaScript正则表达式可匹配嵌套方括号内的任何单词?

我试图找到一种使用正则表达式的方法使方括号[]中的文本变为斜体,包括嵌套方括号,但不包括方括号本身。 到目前为止,我想出的最好的方法是:

text = text.replace(/(\[+)([^\[\]]+)(]+)/g, '$1$2$3');

但是在嵌套括号的情况下失败,例如:

[test1] test2 ([[readonly ][optionality ][argumentType ]argumentName[ = defaultValue]]...) [test3] test4

应该解析为:

[test1] test2([[[只读] [可选性] [argumentType] argumentName [= defaultValue]] ...)[test3] test4

但是,上面的正则表达式却产生了:

[test1] test2([[[只读] [可选性] [argumentType] argumentName [= defaultValue]] ...)[test3] test4

(使用文本argumentName正常而不是斜体)

您无法使用(仅)正则表达式解决此问题,您需要编写解析器。

看看这个:gist.github.com/acdcjunior/cfee862d1618e693bdc6这是一个解析器。

一种方法是匹配每个括号组,并在replace回调内替换该组中的每个单词:

string.replace(/(\[(?:\[[^\]]*\]|[^\[\]]*)*\])/g, function (match) {

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值