@lexstile

Как написать регулярное выражение под захват нескольких ОКВЭД?

Пытался написать сам: ^[\d]{2}(?:[\.\,]{0,2}[\d]{0,2})$
Но это не то и не до конца.

Нужно захватывать такие виды оквэдов (1 === \d{1}):
  • 11
  • 11.1 (или 11,1)
  • 11.11 (или 11,11)
  • 11.11.1 (или 11,11,1)
  • 11.11.11 (или 11,11,11)
  • 11 11.11 11.11.11 (через пробел в строку, допустим только один пробел между оквэдами)
  • 11 11,11 11,11,11


Недопустимы:
  • 11. (или 11,)
  • 11.1. (или 11,1,)
  • 11.11. (или 11,11,)
  • 11.11.1. (или 11,11,1,)
  • 11.11.11. (или 11,11,11,)
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
@dodo512
^\d\d(?:[ .,]\d\d?)*$
https://regex101.com/r/HNNPVh/1

Если недопустимы:
  • 11,11.11
  • 11.11,11
  • 11.1.11
  • 11.1.1

^\d\d(?:([.,])\d(?:\d(?:\1\d\d?|)|)|)(?: \d\d(?:([.,])\d(?:\d(?:\2\d\d?|)|)|))*$

https://regex101.com/r/HNNPVh/2
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
^\d\d(?:|[.,]\d|[.,]\d\d(?:[.,]\d\d?)?)(?: \d\d(?:|[.,]\d|[.,]\d\d(?:[.,]\d\d?)?))*$

^\d\d(?:[.,]\d(?:\d(?:[.,]\d\d?)?)?)?(?: \d\d(?:[.,]\d(?:\d(?:[.,]\d\d?)?)?)?)*$
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
d(?=r) соответствует d, только если после этого следует r, но r не будет входить в соответствие выражения -> тест
(?<=r)d соответствует d, только если перед этим есть r, но r не будет входить в соответствие выражения -> тест
ну и еще
[^d]+ все до d
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы