Якщо ваш регекс є глобальним, а ви захоплюєте, тоді ви повинні використовувати exec. Матч не поверне всі ваші зйомки.
Матч чудово підходить для просто збігу (не для захоплення). Ви запускаєте його один раз, і він дає масив усіх збігів. .
Exec - це те, що ви використовуєте під час захоплення, і кожен раз, коли він виконується, він дає збіг, за яким слідує захоплення. (Матч буде вести себе таким чином, щоб отримати повний збіг з подальшими захопленнями, лише коли регулярний вираз не є глобальним).
Ще одне використання з Exec - отримання індексу або позиції відповідності. Коли у вас є змінна для вашого регулярного виразу, ви можете використовувати .lastIndex і отримати позицію відповідності. В об’єкті регулярного вираження є .lastIndex, а об'єктом регулярного вираження є те, що ви робите .exec. Збіг крапок проводиться на рядок, і ви не зможете потім зробити об'єкт regex dot lastIndex
Рядок має функцію відповідності, яка передається регулярним виразом. І регулярний вираз, має функцію exec і передається рядок
Виконати кілька разів. матч, який ви запускаєте один раз
Добре використовувати матч під час нехоплення та під час захоплення, ви можете використовувати exec, який є більш потужним, оскільки він хороший для отримання знімків, але якщо ви використовували сірник під час захоплення, дивіться, що він показує фіксації, коли регулярний вираз не глобальний, але не не показуватиме знімки, коли регулярний вираз є глобальним.
> "azb".match(/a(z)b/);
[ "azb", "z" ]
> "azb".match(/a(z)b/g);
[ "azb" ]
>
Інша справа, що якщо ви використовуєте exec, зверніть увагу, що викликається в регулярному вираженні, то якщо ви використовували змінну для регулярного виразу, у вас буде більше енергії
Ви не отримуєте збіги, коли не використовуєте змінну для регулярного виразу, тому використовуйте змінну для регулярного виразу, коли використовуєте exec
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
>
> /[a-c]/g.exec("abc")
[ "a" ]
> /[a-c]/g.exec("abc")
[ "a" ]
>
> var r=/[a-c]/g
> r.exec("abc")
[ "a" ]
> r.exec("abc")
[ "b" ]
> r.exec("abc")
[ "c" ]
> r.exec("abc")
null
>
А за допомогою exec ви можете отримати "індекс" матчу
> var r=/T/g
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
2
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
6
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
9
> r.exec("qTqqqTqqTq");
null
> r.lastIndex
0
>
Отже, якщо ви хочете індексувати або захоплювати, тоді використовуйте exec (майте на увазі, що, як ви бачите, з "індексом", "індекс", який він дає, - це дійсно п яте явище, він рахується від 1. Отже, ви можете отримати належне індекс, віднімаючи 1. І як ви бачите, він дає 0 - lastIndex 0 - для не знайдено).
І якщо ви хочете розтягнути відповідність, ви можете використовувати його під час зйомки, але не тоді, коли регулярний вираз є глобальним, і коли ви це зробите для цього, то вміст масиву - це не всі збіги, але є повним матч з подальшим захопленням.
execдля отримання всіх підборів.