【发布时间】:2011-11-09 06:37:37
【问题描述】:
如何在 Ruby 1.9.2 中编写一个正则表达式来确定一个字符串是否符合这个标准:
- 只能包含字母、数字和
-字符 - 不能为空字符串,即长度不能为 0
- 必须至少包含一个字母
【问题讨论】:
-
第二个标准是多余的(已经被第三个覆盖了)。
如何在 Ruby 1.9.2 中编写一个正则表达式来确定一个字符串是否符合这个标准:
- 字符【问题讨论】:
/\A[a-z0-9-]*[a-z][a-z0-9-]*\z/i
是这样的
【讨论】:
我想这两个会帮助你:/\A[a-z0-9\-]{1,}\z/i 和 /[a-z]{1,}/i。第一个检查前两个规则,第二个检查最后一个条件。
【讨论】:
没有正则表达式:
str.count("a-zA-Z") > 0 && str.count("^a-zA-Z0-9-") == 0
【讨论】:
您可以查看this 教程,了解如何在 ruby 中使用正则表达式。关于您需要的内容,您可以使用以下内容:
^[A-Za-z0-9\-]+$
^ 将指示正则表达式引擎从字符串的最开头开始匹配。
[..] 将指示正则表达式引擎匹配它们包含的任何一个字符。
A-Z 表示任意大写字母,a-z 表示任意小写字母,0-9 表示任意数字。
\- 将指示正则表达式引擎匹配-。前面使用\,因为正则表达式中的-是一个特殊符号,所以需要转义
$ 将指示正则表达式引擎在行尾停止匹配。
+ 指示正则表达式引擎一次或多次匹配方括号之间的内容。
您还可以使用\i 标志使您的搜索不区分大小写,因此正则表达式可能会变成这样:
^[a-z0-9\-]+/i$
【讨论】:
^ 是一行的开头,而不是字符串的开头。