Проблема с регулярным выражением универсального размера ткани (S, M, L) - PullRequest
0 голосов
/ 07 июля 2019

Проблемы с моим регулярным выражением. Моя цель - определить размер ткани и вырезать другие данные.

Вот несколько примеров размеров:

2XS
M
XXL Long
XL Short

Вот мое регулярное выражение

^(\d*[SMLX]+)\s*.*#

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

Для XXL Long или 2XL он возвращает правильные данные (XXL и 2XL), но если мой размер выглядит как 2AXL, он возвращает 2XL, но в этом случае он должен вернуть пустой результат, потому что символ "A" находится вне допустимого диапазона символов.

1 Ответ

0 голосов
/ 07 июля 2019

Регулярное выражение [SMLX] соответствует S, M, L или X.

То, что вы описываете, может быть достигнуто с помощью следующего регулярного выражения :

^(\d*(?:M|X{0,2}[SL]))(?:$|\s+.*$)

Что соответствует либо обычному M, либо необязательному X s, за которым следует <<code>S или L> перед *. 1019 *

Я также изменил суффикс вашего регулярного выражения, чтобы он соответствовал строкам, которые не имеют суффикса после размера, и не позволяет \s сопоставлять оператор новой строки - что приводит к совпадению многострочных строк.

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