写ruby正则表达式

时间:2014-05-14 16:29:02

标签: ruby regex

我想知道如何编写一个Ruby正则表达式,表明它应该以字母数字字符开头,后跟只有字母数字和-(在任何序列中)。

所以从字母数字开始,我知道它是:

/\A[A-Za-z0-9]/ 

我怎么说在此之后我只能允许使用字母数字字符和-?我是Ruby和正则表达式的新手。有什么建议吗?

我是否可以通过更深入的方式了解正则表达式和Ruby?我发现http://rubylearning.com/satishtalim/ruby_regular_expressions.html很有用。

2 个答案:

答案 0 :(得分:3)

您已拥有初始的字母数字字符类[A-Za-z0-9]。对于下一个字符,您只想将-添加到此:[A-Za-z0-9-]。因此最终的正则表达式是:

[A-Za-z0-9][A-Za-z0-9-]*

请注意,X*表示" X 0次或更多次" 。如果您想要" X一次或多次" ,请使用X+

答案 1 :(得分:0)

r1 = /^[A-Za-z0-9][A-Za-z0-9-]*$/ #=> /^[A-Za-z0-9][A-Za-z0-9-]*$/
r2 = /^[A-Za-z0-9-]*$/            #=> /[A-Za-z0-9-]*$/

str = "3birdsweresittingonawire-nowtherearebuttwo"

str =~ r1 #=> 0 (truey)

(str =~ r2) and str[0] != '-' #=> true


str = " % 3birdsweresittingonawire-nowtherearebuttwo"

str =~ r1                     #=> nil
(str =~ r2) and str[0] != '-' #=> nil

第二个示例显示了为什么需要锚点^$