使用javascript将两个indexOf和regex合并为一个

时间:2014-05-27 03:30:40

标签: javascript

我尝试将这两个条件合二为一,但结果并不是我想要的。

    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

4 个答案:

答案 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)

尝试组合两个正则表达式

 names = name.split(/\s&\s|\sand\s/ig);

JSFIDDLE: http://jsfiddle.net/Ax5fu/

答案 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);