js 正则分组匹配

2018-01-15 17:22:53 +08:00
 sunhk25

想捕获由 <> 标签标注的字符串,不知道下面这样的需求该如何实现。

//var rawTagStr ="AA<中→>BBCC<←中>DD<黄→>EE<←黄>FF";//output OK:<中→>BBCC<←中>,2 <黄→>EE<←黄>,16
var rawTagStr ="AA<中→>BB<青→>GG<←青>CC<←中>DD<←小>EEFF";//want: AA<中→>BB<青→>GG<←青>CC<←中>
var rawTagStr ="AA<中→>BB<青→>GG<←青>CC<←中>DDEEFF";//want: AA<中→>BB<青→>GG<←青>CC<←中>
var rawTagStr ="AA<中→>BB<青→>GG<←青>CCDDEEFF";//want: <青→>GG<←青>
var rawTagStr ="AA<中→>BB<青→>GGCCDDEEFF";//want: null
var reg = /(<[^>]{1,2}→>).+?(<←[^>]{1,2}>)/g;
while((tagMatch = reg.exec(rawTagStr)) !== null) {
    var tag = tagMatch[0];
    toIdx = tagMatch["index"];
    console.log(tag + "," + toIdx);
}
1421 次点击
所在节点    前端开发
4 条回复
sunhk25
2018-01-15 17:31:03 +08:00
markdown 怎么会这样。。。
chairuosen
2018-01-15 17:35:53 +08:00
/<(.)→>.*<←\1>/g
sunhk25
2018-01-16 09:11:25 +08:00
@chairuosen 感谢
var rawTagStr ="AA<黄→>EE<←黄>BBCCDD<黄→>EE<←黄>";
再问一个,上面的正则这种情况会取最长范围(BBCCDD 会被包括在里面),求问如何修改
sunhk25
2018-01-16 09:29:25 +08:00
谢谢,/<(.)→>.*?<←\1>/g

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/423085

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX