Ограничение длины строки регулярного выражения для определенного шаблона - PullRequest
0 голосов
/ 18 мая 2018

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

  1. Запрещается использовать только пробелы (пробелы).
  2. Пробелы разрешены, только если хотя бы один неприсутствует пробельный символ.
  3. Допускаются любые символы.
  4. Длина должна быть ограничена 50 символами.

Я пробовал этот шаблон .*[^ ].* из Шаблон регулярного выражения для "содержит не только пробелы" .Подскажите, пожалуйста, как ограничить это до 50 символов.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы не можете использовать обходные пути в шаблонах регулярных выражений Go.В Java, чтобы сопоставить непустую строку с 0 до 50 символов, вы можете использовать

s.matches("(?s)(?!.{51})\\s*\\S.*")

Шаблон соответствует всей строке (matches привязывает соответствие по умолчанию) и означает:

  • (?s) - Pattern.DOTALL встроенный модификатор, заставляющий . совпадать с новыми строками, тоже
  • (?!.{51}) - отрицательный прогноз, запрещающий 51 символ в строке (таким образом, разрешено менее 51), От 0 до 50, это равно (?=.{0,50)$)
  • \\s* - 0+ пробелов
  • \\S - непробельный символ
  • .*- любые 0+ символов до конца строки.

В Go, просто используйте немного кода.Импортируйте strings и используйте

len(s) <= 50 && len(s) >= 1 && len(strings.TrimSpace(s)) != 0

Здесь len(s) <= 50 && len(s) >= 1 ограничивает длину строки от 1 до 50 символов, а len(strings.TrimSpace(s)) != 0 запрещает пустую / пустую строку.

0 голосов
/ 18 мая 2018

Полагаю, прогноз в регулярных выражениях может помочь.

Попробуйте добавить (? =. {0,50} $) перед своим регулярным выражением.Чтобы получить что-то вроде этого:

(?=.{0,50}$)^.*[^ ].*

Вы можете изменить {0,50} на {1,50}, если вы не хотите разрешать пустые строки.

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