Когда вы используете *
в качестве разделителя в своем регулярном выражении, оно становится ,|\\n|\\|\*
, что является правильным регулярным выражением. Он соответствует символу ',' или '\ n' или символу '*'. Для вашей строки она соответствует [***
] \n
11 ***
22 * 1006 * 33.
Но когда вы используете ***
в качестве разделителя в своем регулярном выражении, оно становится ,|\\n|\\|\***
,что неверно. Здесь он получает два не спасенных *
в конце. *
в регулярном выражении означает 0 или более из предыдущего шаблона. Вы не можете иметь два из них вместе.
Это особый случай, потому что *
имеет особое значение в регулярном выражении. Если бы вы использовали любой не-регулярный символ, он бы работал.
Более простое решение - использовать функцию разделения javascript, чтобы легко получить желаемый результат. Сначала вы можете разделить строку, используя \n
.
let splitStr = str.split('\n');
// This would return ["[***]", "11***22***33"]
, а затем разделить 1-й индекс splitStr, используя разделитель.
splitStr[1].split('***');
// splitStr[1].split(customDelimiter)
// This would return ["11", "22", "33"]
При использовании этого вам не нужноиспользуйте оператор if или else для разделения разделителя из одного символа и разделителя из нескольких символов.