是否可以在Ruby中的str.match中连接表达式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在Ruby中的str.match中连接表达式?相关的知识,希望对你有一定的参考价值。
想要匹配的特定字符串至少有一位数字,一个上位和一个下位,但不包括符号'%^&$#'和空格。所以我在用str.match?我想知道是否有一个衬线而不是&& .. && ..串联data.match?(/d+|[[:upper:]]|[[:lower:]]|w+/)
之类的表达式似乎不起作用。
def chkin(data)
if data.match?(/d+/)
&& data.match?(/[[:upper:]]+/)
&& data.match?(/[[:lower:]]+/)
&& data.match?(/w+/)
&& data.length >= 10
return true
else
return false
end
end
而且 w +字母数字不适用于:"2aA1b%%sdf3123!!"
>>如果为false,则为true。
答案
您可以使用包含三个正向前行的正则表达式来完成此操作:
r = /(?=.*[a-z])(?=.*[A-Z])(?=.*d)/
"abcDE27f".match?(r) #=> true
"abcde27f".match?(r) #=> false
"ABCDE27F".match?(r) #=> false
"abcDEfgh".match?(r) #=> false
您可以添加其他要求,并具有额外的积极前瞻性。例如,如果字符串的长度必须在8到10个字符之间,则可以添加
(?=.{8,10}z)
如果只希望字符串包含字母数字字符,请添加]>
(?=p{Alnum}+z)
或将
Ap{Alnum}+z
放在正则表达式的末尾。
以上是关于是否可以在Ruby中的str.match中连接表达式?的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式中的match,test,exec,search的返回值