要在任意'&''-'或者'>'

Javascript regex to split on either ' & ', ' - ' or ' > '

本文关键字:gt 或者 amp 任意      更新时间:2023-10-08

我有一个这样的字符串:

var category = 'New & improved > crazy - whatever'

我想把它转换成:

var arr = ['New', 'improved', 'crazy', 'whatever']

应使用' & ', ' - ' or ' > '的任何组合(包括空格)。

到目前为止,我正在做:

var arr = [];
    if(obj.categories[i].name.indexOf(" > ") >= 0){
        var arr2 = obj.categories[i].name.split(" > ");
        for(var i = 0; i<arr.length; i++){
            if (arr[i].indexOf(' & ') >=0){
                var newarr = arr[i].split(' & ');
                arr.push(newarr);
            }else{
                arr.push(arr[i]);
            }
        }
    }
    if(obj.categories[i].name.indexOf(" - ") >= 0){
        var arr2 = obj.categories[i].name.split(" - ");
        for(var i = 0; i<arr.length; i++){
            if (arr[i].indexOf(' & ') >=0){
                var newarr = arr[i].split(' & ');
                arr.push(newarr);
            }else{
                arr.push(arr[i]);
            }
        }
    }else if(obj.categories[i].name.indexOf(" & ") >= 0){
        var arr = obj.categories[i].name.split(" & ");
        return arr;
    }else{
        return [obj.categories[i].name];
    }

但如果字符串中同时存在&符号和破折号,则此操作无效。我觉得正则表达式无论如何都可以更好地处理这一问题,实现这一点并使其在不同的用例中相对更具未来性的最佳方法是什么(当然,只涉及上面的分隔符)?

var category = 'New & improved > crazy - whatever';
category.split(/'s*[-&>]'s*/); // => ["New", "improved", "crazy", "whatever"]

注:-不应位于在中间。否则,它将被解释为字符范围。

尝试:
'New & improved > crazy - whatever'.split(/[>&-]/);

或者结果中没有空格(但结果可能取决于初始字符串的格式):
'New & improved > crazy - whatever'.split(/'s+[>&-]'s+/);

您可以使用这个:

var result = yourstring.split(/['s>&-]+/);
print(result);
var category = 'New & improved > crazy - whatever'
var arr = category.split(/['&'>'-]/);