Как написать регулярное выражение в заглавном случае - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю с приложением SAP, которое называется информационный стюард, и создаю правило, в котором имена должны быть указаны в заглавном случае (т. Е. Каждое слово пишется с заглавной буквы).

Я сформулировал следующее правило:

BEGIN

IF(match_regex($name, '(^(\b[A-Z]\w*\s*)+$)', null)) RETURN TRUE;

ELSE RETURN FALSE;

END

Несмотря на то, что он успешен, он принимает входные данные, которые должны быть обозначены как «ЛОЖЬ».Пожалуйста, смотрите прикрепленный снимок экрана.

'TesT Name' и 'TEST NAME' должны быть FALSE, но вместо этого передаются под этим регулярным выражением.

Любая помощь /руководство с регулярным выражением было бы очень полезно.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Регулярное выражение (^(\b[A-Z]\w*\s*)+$) представляет шаблон, который соответствует строке, которая полностью соответствует:

  • ^ - начало строки
  • (\b[A-Z]\w*\s*)+ - 1 или более вхождений (из-за (...)+) из
    • \b - граница слова
    • [A-Z] - заглавная буква ASCII
    • \w* - 0 или более букв / цифр/ подчеркивания
    • \s* - 0+ пробелов
  • $ - конец строки.

Как видите, это позволяетзавершающие пробелы, и \w соответствует тому, что соответствует [A-Za-z0-9_], то есть совпадает как строчные, так и прописные буквы.

Вы хотите сопоставлять строчные буквы только после начальных прописных, также допуская - и _ персонажиВы можете использовать

^[A-Z][a-z0-9_-]*(\s+[A-Z][a-z0-9_-]*)*$

См. regex demo .

Подробности

  • ^ - началоякоря строки
  • [A-Z][a-z0-9_-]* - заглавная буква, за которой следуют 0+ строчные буквы, цифры, _ или - символы
  • (\s+[A-Z][a-z0-9_-]*)* - ноль или более вхождений:
    • \s+ - 1 или более пробелов
    • [A-Z][a-z0-9_-]* - заглавная буква, за которой следуют 0+ строчных букв, цифр, _ или - символов
  • $ - конец строки.
0 голосов
/ 18 февраля 2019

Я бы написал ваше регулярное выражение в виде:

^[A-Z]\w*(?:\s+[A-Z]\w*)*$

Это говорит о том, что оно соответствует одному слову, начинающемуся с заглавной буквы, за которым следуют один или несколько пробелов и другое слово, начинающееся с заглавной буквы, эта величина равна нулю.или более раз.

Я формулирую соответствующее слово как начинающееся с [A-Z], за которым следует \w*, что означает ноль или более символов слова.Это позволяет использовать такие вещи, как A.

Демо

Редактировать:

Исходя из приведенных выше комментариев, если вы хотите, чтобы какой-то другой класс символов представлял то, что следует за начальной заглавной буквой, то вместо этого сделайте следующее:

^[A-Z][something]*(?:\s+[A-Z][something]*)*$

, где [something] - ваш класс символов.

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