Вы только что обнаружили, почему использование флага g
в регулярных выражениях может быть проблематичным.
Объект RegExp
имеет свойство - lastIndex
.Который устанавливается, когда объект используется для match
(или test
) строки, если используются флаги y
или g
.
Это свойство используется при определении, где начать сопоставление,так что если это не 0
, ваше регулярное выражение может пропустить некоторые свойства.
Поскольку вы используете это регулярное выражение только с .test
, избавьтесь от флага g
.Это не изменит поведение регулярного выражения.
const PATTERN_WORD = /^[^;() ]+$/; // <-- here
const test = (pString: string) => PATTERN_WORD.test(pString);
strArray.map((word) => {
console.log(word, testingWord(word));
});