常用正則表達式(從其它地方找來的...我只是保存而已)

本文提供了多个Ruby正则表达式的实际应用案例,包括用户名注册验证、密码设置、十六进制颜色值匹配等,并详细解释了每种场景下的正则表达式构造方式。
原文鏈接:
[url]http://www.weekface.info/2010/04/02/ruby-regexp-examples[/url]

#1.用戶名注冊
/^[a-z0-9_-]{3,16}$/
#以字母開頭,包含字母,數字,_,-的3-16個字符

#2.用戶密碼
/^[a-z0-9_-]{6,18}$/
#同上

#3.十六進制數
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
#以#开头或者不以#开头, 后面跟 6个字符(a-f或者0-9) 或者 3个字符(a-f或者0-9)

#4.匹配一個Slug(啥叫Slug?看看上面地址栏里的那一陀)
/^[a-z0-9-]+$/
#多個字母(a-z),數字(0-9),和-組成的字符

#5.匹配Email地址,此乃神器也
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

#6.匹配Url
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

#7.匹配IP地址
num = /\d|[01]?\d\d|2[0-4]\d|25[0-5]/
exp = /^(#{num}\.){3}#{num}$/

#num是每个数字串的匹配模式, exp就是最终的RegExp了,下面是演示:

irb(main):001:0> num = /\d|[01]?\d\d|2[0-4]\d|25[0-5]/
=> /\d|[01]?\d\d|2[0-4]\d|25[0-5]/
irb(main):002:0> exp = /^(#{num}\.){3}#{num}$/
=> /^((?-mix:\d|[01]?\d\d|2[0-4]\d|25[0-5])\.){3}(?-mix:\d|[01]?\d\d|2[0-4]\d|25[0-5])$/
irb(main):003:0> exp.match("192.168.1.22")
=> #<MatchData "192.168.1.22" 1:"1.">

#8.匹配时间/日期类型(yyyy.mm.dd hh:mm:ss)
yyyy = /[1-9]\d\d\d/
mm = /0?[1-9]|1[12]/
dd = /0?[1-9]|[12]\d|3[01]/
hh = /[01]?[1-9]|2[0-4]/
MM = /[0-5]\d/
ss = /[0-5]\d/
date_time = /^(#{yyyy}\.#{mm}\.#{dd}) (#{hh}:#{MM}:#{ss})$/

date_time =~ '2008.8.27 22:12:10' # 0
date_time =~ '2008.8.27 22:12:60' # nil

#9. 解决一个问题, 给了一个ip地址:192.168.1.1,想要转为Array: [192,168,1,1]
irb(main):001:0> "192.168.1.1".scan(/(\d+)\.?/)
=> [["192"], ["168"], ["1"], ["1"]]
irb(main):002:0> "192.168.1.1".scan(/(\d+)\.?/).flatten
=> ["192", "168", "1", "1"]
irb(main):003:0> "192.168.1.1".scan(/(\d+)\.?/).flatten.map{|n| n.to_i }
=> [192, 168, 1, 1]
irb(main):001:0> "192.168.1.1".split(".").map{|x| x.to_i}
=> [192, 168, 1, 1]


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值