JSFiddle - React, Tailwind, and code Playground
Recursive query parsing
by tonytlwu
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
JavaScript
var inputs = [
"1,2,3",
"1,[ , 2,3,],[4]",
"",
null,
undefined,
" [ 1 , 2 ] , 3 , [ 4 , [ 5 , a , b , c ] , 6 ] "
];
function splitQueryValues(input) {
var splitPattern = /\,\s?(?![^\\[]*\])/;
var testPattern = /^(?:\[[\w\W]*\])$/;
if (_.isNil(input)) {
return [];
}
return ('' + input).trim().split(splitPattern).map(function (str) {
str = str.trim();
if (!testPattern.test(str)) {
return str;
}
return _.compact(splitQueryValues(str.substring(1, str.length-1)));
});
}
inputs.forEach(function (input) {
console.log(input, splitQueryValues(input));
});