Javascript 正则表达式在 ' & ' 、 ' - ' 或 ' > ' 上分割

标签 javascript regex

我有一个像这样的字符串:

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

我想将其转换为:

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

应与' & '、' - ' 或 ' > ' 的任意组合一起使用(包含空格)。

到目前为止我正在做:

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];
    }

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

最佳答案

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

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

关于Javascript 正则表达式在 ' & ' 、 ' - ' 或 ' > ' 上分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194386/

相关文章:

java.util.regex.PatternSyntaxException : Illegal repetition near index

Spark 数据框列上的正则表达式

regex - 带组的 Perl 正则表达式替换

python - 如何使用正则表达式提取人名?

javascript - ZeroClipboard 在 FireFox 中损坏

javascript - 在 app.js Symfony 4 文件中加载 Assets

javascript - 根据对象内部的键对对象进行排序

java - java android 字符串解析获取属性

javascript - 免费 jqGrid : wrapping POST data in beforeSubmit function

javascript - 传递带参数的函数,但不传递其执行结果