你可以接受不同类型的星星:
/^[\*???]+$/ =~ '???????????????' ? true : false #=> true /^[\*???]+$/ =~ "*???????????**?*???*??*?????*?" ? true : false #=> true对象?真假
请注意,三元运算符返回true
或false
可能无用,因为它将truthy转换为true
falsey false
.
你可以使用:
/^[\*???]+$/ =~ '???????????????' #=> 0
由于0
是真的,它不会改变布尔逻辑的任何东西.
从Ruby 2.4开始,您还可以使用:
'???????????????'.match? /^[\*???]+$/ #=> true字符串边界
最后,如果您要检查整个字符串是全明星,你不应该使用^
或$
,但\A
和\z
:
p "?????????\nI'm not a star!!!\n??????".match? /^[\*???]+$/ #=> true p "?????????\nI'm not a star!!!\n??????".match? /\A[\*???]+\z/ #=> false