自定义UserAgent正则匹配问题

输入字符:

xxx/1.2.3 xxx/1.2.3 xxx/1.2.3

正则:

^(.+\/.+\s?)+$

这样的正则只能测试,但不能匹配。希望匹配出的结果:

[
'xxx',
'1.2.3',
'xxx',
'1.2.3',
'xxx',
'1.2.3'
]

再加一个错误的测试:

'aaa/123 xxx/1.2.3 xxx/1.2.3'.match(/[^\s](.+)\/(.+)/g)
// ['aaa/123 xxx/1.2.3 xxx/1.2.3']
回复
阅读 4.2k
3 个回答

算咯,不用正则了:

const parser = x => x.split(/\s/).map(x=>x.split('/'));
const validate = x => x.length > 0 && x[0].length === 2;

parser('aaa/123 xxx/1.2.3 xxx/12.2.3')
// [ [ 'aaa', '123' ], [ 'xxx', '1.2.3' ], [ 'xxx', '12.2.3' ] ]
validate(parser('aaa/123 xxx/1.2.3 xxx/12.2.3'))
// true
validate(parser('test123'))
// false
var reg = /([\S]+?)\/([\S]+)/g;
var str = 'aaa/123 xxx/1.2.3 xxx/12.2.3';
var res = []
while( tempR = reg.exec(str)) {
    console.log(tempR[1]);
    console.log(tempR[2]);
    res.push(tempR[1], tempR[2]);
}
'xxx/1.2.3 xxx/1.2.3 xxx/1.2.3'.match(/[^/\s]+/g);

一行代码就够了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏