繁体   English   中英

javascript regexp查找两个字符串之间的多个匹配项

[英]javascript regexp find multiple match between two string

如何在javascript中编写正则表达式,使其将字符串"1.aaa 2.bbb 3.ccc"解析为["aaa","bbb","ccc"]

这是我的代码:

 var str = "1.aaa 2.bbb 3.ccc"; var reg1 = /\\d+\\.(.*)\\d+\\./g; //sub regexp $1 match "aaa 2.bbb" var reg2 = /\\d+\\.(.*?)\\d+\\./g; //sub regexp $1 match "aaa" var reg3 = /\\d+\\.(.*?)(?=\\d+\\.)/g; //sub regexp $1 match "aaa" 、 "bbb" var reg4 = /\\d+\\.(.*?)(?=\\d+\\.)|\\d+\\.(.*)/g; //sub regexp $1 match "aaa" 、 "bbb"、undefined,my expect is $1 match "aaa"、“bbb”、“ccc” str.replace(reg1, function(match, p1, p2, offset, string) { console.log("---reg1---") console.log(p1) }) str.replace(reg2, function(match, p1, p2, offset, string) { console.log("---reg2---") console.log(p1) }) str.replace(reg3, function(match, p1, p2, offset, string) { console.log("---reg3---") console.log(p1) }) str.replace(reg4, function(match, p1, p2, offset, string) { console.log("---reg4---") console.log(p1) //sub regexp $1 match "aaa" 、 "bbb"、undefined,my expect is $1 match "aaa"、“bbb”、“ccc” }) 

有一个简单的解决方案吗?

由于您没有提供太多信息,这是我能提供的最好的信息。

 var str="1.aaa 2.bbb 3.ccc"; str = '"' + str.replace(/(\\d+\\.)([az]+)/g, '$2').split(' ').join('","') + '"' console.log(str) 

我会做这样的事情:(第二个示例已更新)

 var s = "1.aaa 2.bbb 3.ccc"; var r = /\\d+\\.([^\\d]*)/g; var s2 = "1.aaa[2017-01-01] 2.bbb 3.ccc" var s3 = "1.aaa[2017-01-01] 2.bbb[2017-01-01] 3.ccc" var s4 = "1.aaa[2017-01-01] 2.bbb 3.ccc[2017-01-01]" var r2 = /\\d+\\.(.*?)( |$)/g function getGroups(s,r){ var matches = []; var m = r.exec(s); while (m != null){ matches.push(m[1]); m=r.exec(s); } return matches; } console.log(getGroups(s,r)); // ['aaa','bbb','ccc'] console.log(getGroups(s2,r2)); // [ 'aaa[2017-01-01]', 'bbb', 'ccc' ] console.log(getGroups(s3,r2)); // [ 'aaa[2017-01-01]', 'bbb[2017-01-01]', 'ccc' ] console.log(getGroups(s4,r2)); // [ 'aaa[2017-01-01]', 'bbb', 'ccc[2017-01-01]' ] 

有关更多信息,请参见此问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM