Как разделить регулярные выражения - PullRequest
2 голосов
/ 20 сентября 2019

Я хотел бы сопоставить все данные ( и ) в строке, но у меня возникли проблемы из-за совпадения моего текущего решения (), в то время как мое намерение получило результат разделения, такой как ['(',')']

My regex выражение: /[()]+/g, Regex101 детская площадка .

Как мне добиться желаемого поведения только свыражение выражение?

const matchType = str => str.match(/[()]+/g)

console.log(matchType('{(})[]')); // ['(',')]

// Expected ['(',')']
console.log(matchType('{[()]}')); // ['()']

Ответы [ 2 ]

4 голосов
/ 20 сентября 2019

Не используйте квантификатор +,

при использовании + квантификатор + это означает один или несколько раз,

[()]+ это означает совпадение ( or ) одинили больше времени, поэтому, когда у вас есть строка, такая как (), она рассматривается как одно совпадение

const matchType = str => str.match(/[()]/g)

console.log(matchType('{(})[]')); // ['(',')]

// Expected ['(',')']
console.log(matchType('{[()]}'));
0 голосов
/ 20 сентября 2019

Вам просто нужно избавиться от +:

const matchType = str => str.match(/[()]/g)

+ означает, что вы будете соответствовать одному или нескольким пареням.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...