let data = '[foo bar]/[red]/1 [foo bar]/[blue]/2'
// => ['foo bar/red/1', 'foo bar/blue/2']
let data = '[foo bar]/[red]/1 [foo bar]/2'
// => ['foo bar/red/1', 'foo bar/2']
求一个更好的方法,谢谢各位大佬~~~~
let data = '[foo bar]/[red]/1 [foo bar]/[blue]/2'
// => ['foo bar/red/1', 'foo bar/blue/2']
let data = '[foo bar]/[red]/1 [foo bar]/2'
// => ['foo bar/red/1', 'foo bar/2']
求一个更好的方法,谢谢各位大佬~~~~
// 字符串
var str = '[foo bar]/[red]/1 [foo bar]/[blue]/2'
var re = /\[(.+?)\]/g; // [] 中括号
// var founds = str.match(re)
// console.log(founds,'founds')
var foundf = [...str.matchAll(re)];
var found = [...foundf];
//["[foo bar]", "[red]", "[foo bar]", "[blue]"]
var mat_str = []
var yuan_str = []
found.map(v => {
yuan_str.push(v[1])
mat_str.push(v[1].split(' ').join('--'))
console.log(v[1].split(' ').join('--'),'ccvvv')
})
console.log(mat_str, yuan_str);
yuan_str.map((v,i)=>{
// let regs = /`${v}`/
let regs = new RegExp(`${v}`,"g")
console.log(regs,'reg')
str = str.replace(regs, mat_str[i])
})
console.log(str,'strsss')
console.log(found,'found')
// strsss [foo--bar]/[red]/1 [foo--bar]/[blue]/2 转译完之后 直接去掉左右括号
str = str.replace(/\[/g, "")
str = str.replace(/\]/g, "")
// => foo--bar/red/1 foo--bar/blue/2
var strArr = str.split(" ")
strArr = strArr.map(v => {
return v = v.split("--").join(" ")
})
console.log(str, 'strsss')
console.log(strArr, 'strArr')
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
更新 2020-10-16
测试用例:
其实仔细思考一下,所有字符串都是用方括号包起来的,只要这个空格前面是数字,或者反方括号就符合条件,所以:
/(?<=(?:\d|\]))\s+/g
结果: