Регулярное выражение для проверки шестнадцатеричной строки - PullRequest
14 голосов
/ 13 ноября 2008

Я использую это простое регулярное выражение для проверки шестнадцатеричной строки:

^[A-Fa-f0-9]{16}$

Как видите, я использую квантификатор для проверки того, что длина строки составляет 16 символов. Мне было интересно, могу ли я использовать другой квантификатор в том же регулярном выражении, чтобы проверить длину строки, равную 16 или 18 (не 17).

Ответы [ 4 ]

51 голосов
/ 13 ноября 2008

Я верю

^([A-Fa-f0-9]{2}){8,9}$

будет работать.

Это хорошо, потому что обобщается на любую строку четной длины.

9 голосов
/ 13 ноября 2008

Это всего лишь 16-ти символьное требование с дополнительными 2-мя символами впоследствии:

^[A-Fa-f0-9]{16}([A-Fa-f0-9]{2})?$

Скобки, возможно, не требуются - я не достаточно гуру регулярных выражений, чтобы бояться, я боюсь. Если кто-то хочет отредактировать его, не стесняйтесь ...

5 голосов
/ 13 ноября 2008
^(?:[A-Fa-f0-9]{16}|[A-Fa-f0-9]{18})$
0 голосов
/ 13 ноября 2008

Я бы наверное пошел с

/^[a-f0-9]{16}([a-f0-9]{2})?$/i

сам. Я думаю, что более удобно читать регулярное выражение без учета регистра и указывать диапазон символов только один раз. Тем не менее, почти все эти ответы работают.

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