Регулярные выражения JavaScript - соответствуют серии шестнадцатеричных чисел
Приветствия JavaScript и гуру регулярного выражения,
Я хочу вернуть все совпадения во входной строке, которая представляет собой шестнадцатеричные шестнадцатеричные числа с шестью цифрами с любым количеством пробелов между ними. Например, "333333 e1e1e1 f4f435" должен возвращать массив:
array[0] = 333333
array[1] = e1e1e1
array[2] = f4f435
Вот что у меня есть, но это не совсем правильно. Я не понимаю, как получить дополнительное пустое пространство там, и я получаю только одно совпадение.
colorValuesArray = colorValues.match(/[0-9A-Fa-f] {6}/);
Спасибо за вашу помощь,
-NorthK
Ответы
Ответ 1
Используйте флаг g для соответствия глобально:
/[0-9A-Fa-f]{6}/g
Другим хорошим улучшением будет добавление границ слов:
/\b[0-9A-Fa-f]{6}\b/g
Если вам нравится, вы также можете установить флаг я для нечувствительного к регистру соответствия:
/\b[0-9A-F]{6}\b/gi
Ответ 2
попробовать:
colorValues.match(/[0-9A-Fa-f]{6}/g);
Обратите внимание на флаг g
для соответствия по всему миру.
Ответ 3
Это зависит от ситуации, но я обычно хочу, чтобы мой код не мог молча принять (и игнорировать или неверно интерпретировать) неправильный ввод. Поэтому я обычно делал бы что-то вроде этого.
var arr = s.split();
for (var i = 0; i < arr.length; i++) {
if (!arr[i].match(/^[0-9A-Fa-f]{6}$/)
throw new Error("unexpected junk in string: " + arr[i]);
arr[i] = parseInt(arr[i], 16);
}
Ответ 4
result = subject.match(/\b[0-9A-Fa-f]{6}\b/g);
дает вам массив всех шестизначных шестнадцатеричных чисел в данной строке subject
.
Границы слов \b
необходимы, чтобы избежать совпадения частей более длинных шестнадцатеричных чисел.