如何在Ruby中编写一个正则表达式来确定字符串是否符合此条件?

时间:2011-11-09 06:37:37

标签: ruby regex

如何在Ruby 1.9.2中编写一个正则表达式来确定字符串是否符合此条件:

  • 只能包含字母,数字和-字符
  • 不能为空字符串,即长度不能为0
  • 必须至少包含一个字母

4 个答案:

答案 0 :(得分:4)

/\A[a-z0-9-]*[a-z][a-z0-9-]*\z/i

就像

  • 字符串的开头
  • 一些(或零)字母,数字和/或短划线
  • 一封信
  • 一些(或零)字母,数字和/或短划线
  • 字符串结尾

答案 1 :(得分:1)

我认为这两个会对您有所帮助:/\A[a-z0-9\-]{1,}\z/i/[a-z]{1,}/i。第一个检查前两个规则,第二个检查最后一个条件。

答案 2 :(得分:1)

没有正则表达式:

str.count("a-zA-Z") > 0 && str.count("^a-zA-Z0-9-") == 0

答案 3 :(得分:0)

您可以查看this教程,了解如何在ruby中使用正则表达式。关于您的需求,您可以使用以下内容:

^[A-Za-z0-9\-]+$

^将指示正则表达式引擎从字符串的最开头开始匹配。

[..]将指示正则表达式引擎匹配它们包含的任何一个字符。

A-Z表示任何大写字母,a-z表示任何小写字母,0-9表示任何数字。

\-将指示正则表达式引擎与-匹配。 \在其前面使用,因为正则表达式中的-是一个特殊符号,因此需要进行转义

$将指示正则表达式引擎在该行的末尾停止匹配。

+指示正则表达式引擎匹配方括号中包含的内容一次或多次。

您还可以使用\i标志使搜索大小写不敏感,因此正则表达式可能会变成这样:

^[a-z0-9\-]+/i$