Регулярное выражение для проверки номера UA Google Analytics

Мне не на 100 процентов ясно, что номера Google Analytics UA всегда состоят из 6 цифр, тире и 2 цифр, как Google часто упоминает в своей документации. Есть частые контрпримеры, в которых используется менее 6 для учетной записи и 1-4 для профиля. Во всех примерах всегда показаны цифры, но даже не ясно, что они не могут быть буквами.

Кто-нибудь знает, опубликовал ли Google регулярное выражение, которое точно соответствует допустимым номерам UA? Я добавляю эту функцию в консоль администратора приложения, над которым работаю, и хочу проверить ввод пользователя.


person Otis    schedule 23.03.2010    source источник


Ответы (2)


Возможно, нет фиксированного диапазона цифр. 6 цифр для номера учетной записи ограничат Google до 1 000 000 пользователей. Я уверен, что Google стремится к большему. Этот часто задаваемый вопрос о Google Analytics показывает UA-xxxxxxx-y как образец номера счета (7+1 цифр). Я бы предположил, что фиксированы только UA и тире, а количество цифр увеличивается по мере роста числа пользователей и профилей. Например. чтобы разрешить от 4 до 10 цифр для пользователя и от 1 до 4 цифр для профиля, вы можете использовать это регулярное выражение в стиле Perl:

\bUA-\d{4,10}-\d{1,4}\b

Если он должен работать с ограниченным синтаксисом регулярных выражений Google Analytics< /а> попробуй так:

UA-[0-9]+-[0-9]+
person Jan Goyvaerts    schedule 23.03.2010
comment
Да, я сказал, что 6, потому что не считал, а просто мельком взглянул. :p Я тоже склонялся ко второму регулярному выражению, но не был уверен, разрешают ли они буквы. - person Otis; 23.03.2010
comment
Карло в этой теме carlorizzante.com/2011/ заявляет что UA-1234567 по-прежнему является действительным идентификатором. Я предпочитаю быть консервативным и стараться не отвергать возможно правильный код, поэтому я думаю, что буду использовать: \bUA-\d{4,10}(-\d{1,4})?\b - person ThisGuy; 02.08.2012
comment
Хорошо, /\bUA-\d{4,10}-\d{1,4}\b/ отлично работает для :format в валидаторах Ruby. Спасибо! - person Eric Tjossem; 10.01.2013

По состоянию на середину 2021 года появились дополнительные форматы, а в будущем могут появиться и другие форматы. Существует шаблон, который будет работать почти для всех активных форматов и, вероятно, будет применяться для будущих форматов.

/^[A-Z][A-Z0-9]?-[A-Z0-9]{4,10}(?:\-[1-9]\d{0,3})?$/

(подсветка синтаксиса регулярного выражения stackoverflow, похоже, не нравится ^)

Существующие коды включают: UA YT MO G DC AW

UA-12345-1 G-J2DV45G DC-JGWWE32 AW-GER322

Если вы пытаетесь сопоставить код в более длинной строке, попробуйте использовать параметр границы слова \b...

/\b[A-Z][A-Z0-9]?-[A-Z0-9]{4,10}(?:\-[1-9]\d{0,3})?\b/

Пояснение (без дополнений ^|$|\b):

  • Совпадение с одним символом из списка ниже [A-Z]
  • A-Z соответствует одному символу в диапазоне от A (индекс 65) до Z (индекс 90) (с учетом регистра).
  • Совпадение с одним символом из списка ниже [A-Z0-9]
  • ? соответствует предыдущему токену между нулем и 1 раз, столько раз, сколько возможно, возвращая по мере необходимости (жадный)
  • A-Z соответствует одному символу в диапазоне от A (индекс 65) до Z (индекс 90) (с учетом регистра).
  • 0–9 соответствует одному символу в диапазоне от 0 (индекс 48) до 9 (индекс 57) (с учетом регистра).
  • - соответствует символу - с индексом 4510 (2D16 или 558) буквально (с учетом регистра)
  • Совпадение с одним символом, присутствующим в списке ниже [A-Z0-9] {4,10} соответствует предыдущему токену от 4 до 10 раз, максимально возможное количество раз, возвращая по мере необходимости (жадный)
  • A-Z соответствует одному символу в диапазоне от A (индекс 65) до Z (индекс 90) (с учетом регистра).
  • 0–9 соответствует одному символу в диапазоне от 0 (индекс 48) до 9 (индекс 57) (с учетом регистра).
  • Группа без захвата (?:-[1-9]\d{0,3})?
  • ? соответствует предыдущему токену между нулем и 1 раз, столько раз, сколько возможно, возвращая по мере необходимости (жадный)
  • \- соответствует символу - с индексом 4510 (2D16 или 558) буквально (с учетом регистра)
  • Соответствует одному символу из списка ниже [1-9] 1-9 соответствует одному символу в диапазоне от 1 (индекс 49) до 9 (индекс 57) (с учетом регистра)
  • \d соответствует цифре (эквивалентно [0-9]) {0,3} соответствует предыдущему токену от 0 до 3 раз, столько раз, сколько возможно, возвращая по мере необходимости (жадный)
person Harry B    schedule 06.08.2021