Split string in JavaScript using RegExp ignoring the delimiter inside brackets

后端 未结 2 955
名媛妹妹
名媛妹妹 2020-12-06 20:45

I have various instances of strings that I need to split. Following are some examples and the desired output scenarios. The rules to split are also listed:

Example 1

相关标签:
2条回答
  • 2020-12-06 21:20

    This regex should work for the cases you've outlined:

    /\|(?!(?:\w+\|?)+])/
    

    Here's an example of it running: http://jsfiddle.net/UFq3h/1/ (you will need to have the console opened to see the results).

    Crude explanation: any | character not followed by (word characters or | followed by ]). If you need a more precise explanation post a comment and I'll try to make it clearer.

    Edit: Thanks to Lolo for the improved version, which handles the last example in the use case.

    0 讨论(0)
  • 2020-12-06 21:31

    I can't think of regex right now, but you can do this:

    function doSplit(input) {
        var tmp = input.split('|');
    
        var result = [];
        for (var i = 0, j = 0; i < tmp.length; i++) {
            result[j] = (result[j] ? result[j] + '|' : '') + tmp[i];
            if (result[j].indexOf('[') == -1 || result[j].indexOf(']') != -1) {
                j++;
            }
        }
    
        return result;
    }
    
    var i = 'qualifier1[filename.ext|someattributes]|qualifier2[another_filename.ext|some_other_attributes]';
    var o = doSplit(i);
    
    0 讨论(0)
提交回复
热议问题