我相信你想要以下。
r = /
\A # match the beginning of the string
[A-Z] # match an upper case English letter
\p{Alnum}* # match zero or more Unicode letters or digits
\z # match the end of the string
/x # free-spacing regex definition mode
'ThisIsATest'.match? r #=> true
'TIsAT22Test'.match? r #=> true
'thisIsATest'.match? r #=> false
'ThisIsATest?'.match? r #=> false
'T'.match? r #=> true
'LeMêmeTest'.match? r #=> true
'Ãtre'.match? r #=> false
''.match? r #=> false
我们只能测试第一个字符(必须是字母)的大小写,因为剩余字母的大写和小写的任何组合都可以解释为对应于大小写名称。例如
'TIsAT22Test'.match? r #=> true
可以说
'T Is A T22 Test'
'TIsAT22test'.match? r #=> true
因为它可以被视为
'T Is A T22test'
.
A-Z
. 这是通过RubyMRI 2.5.x实现的。然而,Ruby MRI v2.6(将于2018年12月25日发布)中的一个变化是常量可以以1853个额外字符开头(
source
). 大概(我会调查和编辑以显示我的发现),任何角色
s
满足
s.match? /\p{Upper}/ #=> true
1.在Ruby v2.5.1中可以看到
Même
是常量的有效名称:
Même = 4; Même = 5 #=> warning: already initialized constant
. 然而,
Ãtre
事实并非如此。事实上
是局部变量的名称:
Ãtre = 7; binding.local_variable_get(:Ãtre) #=> 7