Regex匹骆驼和Pascal情况
-
21-09-2019 - |
题
我要写分析器,一种语言,应该有严格的语法规则的关于命名的类型、变量和这样的。例如,所有课 必须 被PascalCase,所有的变量参数和其他标识符 必须 被驼峰式.
例如 HTMLParser
是不允许的,并且必须被命名为 HtmlParser
.任何想法regexp,可以匹配的东西是PascalCase,但是没有两个大写字母吗?
解决方案
<强>驼峰:强>
^[a-z]+(?:[A-Z][a-z]+)*$
<强> PascalCase:强>
^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
其他提示
/([A-Z][a-z]+)*[A-Z][a-z]*/
但我不得不说,你的命名选择太臭,HTMLParser的应该被允许和首选。
我不相信上市可以以数字开头的项目(还以为我读它的地方,所以把它与盐粮),所以最好的情况是像罗杰·佩特与一些小的修改(在我看来)
/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/
应该是这样的,找一个大写字母,那么至少有一个小的情况下或号码,以上,以及它看起来像它处理一样,这似乎是需要一个大写字母,但附加字母可选的。
好运
^[A-Z][a-z]*([A-Z][a-z]*)
这应该适用于:
- MadeEasy
- 美妙的
- AndMe
这种类型的模式。
不隶属于 StackOverflow