#python #regex
#регулярное выражение
Вопрос:
Я пытаюсь сопоставить число с регулярным выражением, таким как:
34-7878-3523-4233
с помощью этого:
^[0-9][0-9-]*-[0-9-]*[0-9]$
Но выражение также позволяет
34—34———88
Итак, как я могу разрешить только один дефис между числом?
Ответ №1:
Ваше регулярное выражение:
Посмотрите на это в действии: Regexr.com
^[0-9] (-[0-9] ) $
Матчи:
1-2
1-2-3
Не соответствует:
1
1-
1-2-
1-2----3
1---3
Комментарии:
1. Спасибо, но для меня должен существовать хотя бы один дефис
Ответ №2:
Это потому, что вы включили дефис в разрешенные символы в вашем классе символов. Оно должно быть у вас снаружи.
Вы можете попробовать что-то вроде этого: —
^([0-9] -)*[0-9] $
Теперь это будет соответствовать 0 или более повторениям некоторых цифр, за которыми следует дефис. Затем одна или несколько цифр в конце.
Комментарии:
1. Это позволяет использовать только один дефис с одной цифрой, такой как
3-3-3
. Я хочу соответствовать, как232424-42-2455
2. @vusan. Нет, теперь оно будет соответствовать нескольким цифрам. Я забыл ввести кванторы.
Ответ №3:
Используйте normal*(special normal*)*
шаблон:
^[0-9] (-[0-9] ) $
где normal
это [0-9]
и special
является -