如何在 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 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]' ]
有关更多信息,请参阅此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句