Проблема с регулярным выражением для проверки на streetNumber

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Мне нужно проверить номер улицы. Оно должно быть длиной не более 4, и первые 3 должны быть числом, а последним может быть буква (специальный символ не допускается). Буква не является обязательной. Пример 2, 34A, 45, 101 или 121B — все возможные числа. У меня есть это регулярное выражение, но у меня оно не работает. Кто-нибудь может мне помочь.

^[1-9]|[A-Za-z]{1,4}

Я ожидаю, что 2 , 34A , 45 101 или 121B все пройдут проверку регулярного выражения

Комментарии:

1. В качестве дополнительного примечания обязательно прочитайте эту статью об адресах.

2. Я думаю, еще одно требование заключается в том, чтобы оно не начиналось с нуля.

Ответ №1:

^[1-9]d{0,2}[A-Za-z]?$

Объяснение:

  • [1-9] цифра от 1 до 9.
  • d{0,2} ноль или более (до 2) цифр.
  • [A-Za-z]? буква (необязательно)

https://regexr.com/4br78

В случае, если вы хотите разрешить 4-значные числа:
^[1-9]d{0,2}[A-Za-zd]?$

Комментарии:

1. Я бы добавил ^...$ , поскольку это для проверки.

Ответ №2:

Просто используйте ^[1-9]d{0,2}[A-Z]?$

Объяснение:

^ — начало строки

[1-9] — совпадение с 1 по 9

d{0,2} — сопоставьте ноль с двумя цифрами

[A-Z]? — соответствует нулю или одной букве

$ — конец строки

ДЕМОНСТРАЦИЯ

Комментарии:

1. С помощью этого регулярного выражения числа могут начинаться с нуля.

2. @Marlaqk OP не указал, что это недопустимо

3. Это запрещает любой однозначный номер дома

4. Это не принимает строчные буквы и 4 цифры.

5. Кто сказал, что этого не должно быть? «Оно должно быть длиной не более 4, и первые 3 должны быть числом, а последним может быть буква […]» Это означает, что 4-й также может быть числом.