Ruby 验证第一个字符必须是整数或字母

Ruby 验证第一个字符必须是整数或字母,ruby,regex,validation,Ruby,Regex,Validation,我有一种方法,可以“发现”我想要阻止的用户输入 def has_forbidden_prefix?(string) string =~ %r{^(http://|www.)} end 如果有禁止的前缀?是真的,我不想接受输入 例如: 允许:google.com 不允许:www.google.com 现在,我想在我的方法中检测任何开始的特殊字符 不允许:。google.com,/google.com 我的正则表达式中必须包含什么?该正则表达式与您从 所以你可以 def has_forbidd

我有一种方法,可以“发现”我想要阻止的用户输入

def has_forbidden_prefix?(string)
  string =~ %r{^(http://|www.)}
end
如果有禁止的前缀?是真的,我不想接受输入

例如:

允许:google.com

不允许:www.google.com

现在,我想在我的方法中检测任何开始的特殊字符

不允许:。google.com,/google.com


我的正则表达式中必须包含什么?

该正则表达式与您从

所以你可以

def has_forbidden_prefix?(string)
  disallowed_string = string =~ %r{\A(http://|www)}
  non_alphanumeric = string =~ /\A[^a-zA-Z0-9]/

  disallowed_string || non_alphanumeric
end

查看第一个字符是字母数字还是数字的正则表达式为:

^[a-zA-Z0-9]


其中^表示应用正则表达式模式的字符串的开头。有关更多信息,请参阅

我认为您需要添加一些要匹配的示例字符串。不清楚您是指字符串的第一个字符,还是指www或www之后的第一个字符http://.Any 与正则表达式匹配的字符串的第一个字符已经是字母(假设不是多行)。谢谢添加了一些示例
“google.com”
与您的正则表达式不匹配。我忘记了第二个正则表达式中字符串的开头(
^
)!再试一次:)再次感谢!:-)但不应该是0-9吗?看起来我需要再来一杯咖啡。。。是的,应该!这是一个糟糕的解决方案。您使用2个正则表达式来完成1的工作。另外@sawa已经指出,这种区别是没有意义的。请阅读他之前的问题,了解他试图实现的目标。这是为了验证。使用不同的正则表达式在一个正则表达式上检查不同的条件更有意义,因为它更易于维护。感谢您的解决方案,它是绝对正确的!但我在最初的问题中犯了一个错误。我已经更新了。