是否可以在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的返回值

JavaScript正在表达式方法总结

正则表达式测试VS string.match 知道一个字符串是不是匹配一个正则表达式

JAVASCRIPT match()

match()方法解析

是否有正则表达式的通用/标准子集?