我尝试将这两个条件合二为一,但结果并不是我想要的。
var name = 'Ron & Peggy Sue'; //or 'Ron and Peggy Sue';
if ( name.indexOf('&') > -1 ){
names = name.split(/ & /g);
}
if ( name.toLowerCase().indexOf(' and ') > -1 ) {
names = name.split(/ and /gi);
}
它应该返回一个名称数组:
names = ['Ron', 'Peggy Sue']; //regardless of `&` or `and` separator
答案 0 :(得分:3)
怎么样:
name.split(/\s+(?:and|&)\s+/i)
示例:
var tests = [
'Ron & Peggy Sue and Reandy',
'Ron and Peggy Sue',
]
tests.map(function(x){return x.split(/\s+(?:and|&)\s+/i)})
//^
//[ [ 'Ron', 'Peggy Sue', 'Reandy' ], [ 'Ron', 'Peggy Sue' ] ]
答案 1 :(得分:1)
答案 2 :(得分:0)
function getNames (str) {
return str.split(/ & | and /gi);
}
在此处查看:[{3}}
答案 3 :(得分:0)
var name = 'Ron & Peggy Sue'; //or 'Ron and Peggy Sue';
if (name.indexOf('&') > -1 || name.toLowerCase().indexOf(' and ') > -1) {
names = name.replace(/ and /gi, ' & ').split(/ & /g);
}
console.log(names);