一.通常情况 我们经常会需要通过正则表达式来分割字符串,一般都是将全部匹配到的内容进行分割
类似这种:'title:正则表达式,message:正则表达式的学习和使用,author:张三'
通过':'(冒号)分割成我们想要的数据,即:[title,正则表达式][message,正则表达式的学习和使用,[author,张三]]
Ⅰ.上面的实现方式通常常见的为:
const eg = 'title:正则表达式,message:正则表达式的学习和使用,author:张三';
const egSplit = eg.split(',');console.log(egSplit)
// ["title:正则表达式", "message:正则表达式的学习和使用", "author:张三"]
Ⅱ.最后通过巡回上面的数组实现key和value的获取
const eg = 'title:正则表达式,message:正则表达式的学习和使用,author:张三';
const egSplit = eg.split(',');
console.log(egSplit);
// ["title:正则表达式", "message:正则表达式的学习和使用", "author:张三"]// 第二步:
const egSplitArray = [];
egSplit.forEach(item=>{ egSplitArray.push(item.split(':'))})console.log(egSplitArray)
//
然后就获取到对应的key和value
注意:以上这种情况的实现有很多,这种这是一种实现方式,网上一搜一大把的方法
变型:字符串只根据第一个匹配的内容进行分割
如果提供的数据是这种的不规范的,那么上面的方法就不再适用了因为
const eg = 'title:正则表达式,message:正则表达式的学习和使用:使用者用起来很舒服:张三说,author:张三';
我们还是按上面第一步和第二部处理直接看下结果会是什么。
第一步
["title:正则表达式", "message:正则表达式的学习和使用:使用者用起来很舒服:张三说", "author:张三"]
第二步
(2) ["title", "正则表达式"](4) ["message", "正则表达式的学习和使用", "使用者用起来很舒服", "张三说"](2) ["author", "张三"]
很显然第二个数组的数据不是我们想要的。
我们想要的数据格式应该是:
["message", "正则表达式的学习和使用:使用者用起来很舒服:张三说"]
破解方法:
第二部处理方式改变一下:
// 第二步:
const egSplitArray = [];
egSplit.forEach(item=>{
egSplitArray.push(item.split(/:(.+)/))
})
console.log(egSplitArray)
//打印结果
(3) [Array(3), Array(3), Array(3)]0: (3) ["title", "正则表达式", ""]1: (3) ["message", "正则表达式的学习和使用:使用者用起来很舒服:张三说", ""]2: (3) ["author", "张三", ""]length: 3__proto__: Array(0)
其实是用到 (.+) 这个感兴趣的同学可以深入了解一下。