Регулярное выражение, совпадающее с регистром верблюдов и паскалей - PullRequest
4 голосов
/ 20 января 2010

Я собираюсь написать парсер для языка, который должен иметь строгие синтаксические правила именования типов, переменных и тому подобного. Например, все классы должны быть PascalCase, а все имена переменных / параметров и другие идентификаторы должны быть camelCase.

Например, HTMLParser недопустимо и должно иметь имя HtmlParser. Любые идеи для регулярного выражения, которые могут соответствовать чему-то, что является PascalCase, но не содержит двух заглавных букв?

Ответы [ 4 ]

8 голосов
/ 21 января 2010

верблюжий:

^[a-z]+(?:[A-Z][a-z]+)*$

PascalCase:

^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
3 голосов
/ 20 января 2010
/([A-Z][a-z]+)*[A-Z][a-z]*/

Но я должен сказать, что ваш выбор имен воняет, HTMLParser должен быть разрешен и предпочтителен.

1 голос
/ 08 апреля 2019

^[A-Z][a-z]*([A-Z][a-z]*)

Это должно работать для:

  1. MadeEasy
  2. Wonderful
  3. AndMe

это типы скороговорок.

1 голос
/ 21 января 2010

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

/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/

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

Удачи

...