正则表达式

身份证15位18位的匹配:


/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
1
2
3
4
5
6
7
8
>> "3243" =~ /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
=> nil
>> "65409819800917655x" =~ /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
=> 0
>> "65409819800917655X" =~ /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
=> 0

validates_format_of :card_number, :with => /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/, :message => "请输入正确的15位或18位身份证号码"

抽取"{{"与"}}"之间的内容

1
2
3
4
5
/\{\{.*?\}\}/

/\{\{[\s|\S]*?\}\}/

# 前面一个不处理回车换行
1
2
3
4
5
6
7
8
>> a="11{{hello}}2
22{{wor
ld}}333"
=> "11{{hello}}2\n22{{wor\nld}}333"
>> a.gsub(/\{\{.*?\}\}/, 'good')
=> "11good2\n22{{wor\nld}}333"
>> a.gsub(/\{\{[\s|\S]*?\}\}/, 'good')
=> "11good2\n22good333"

ruby正则表达式语法

[] 范围描述符。[a-z]表示从a到z之间的任意一个。
\w 英文字母和数字。即[0-9 A-Z a-z]。
\W 非英文字母和数字
\s 空字符,即[\t\n\r\f]。
\S 非空字符。
\d 数字,即[0-9]。
\D 非数字。
\b 词边界字符(在范围描述符外部时)
\B 非词边界字符
\b 退格符(0x08)(在范围描述符内部时)
*前面元素出现0次以上
+前面元素出现1次以上
{m,n} 前面元素最少出现m次,最多出现n次
? 前面元素出现0次或1次
| 选择
() 群组
.(dot) 匹配任意字母(不包括回车换行)
其他字符 该字符本身

修改href的正则

参考资料:

正则表达式30分钟入门教程


Wiki首页 | 查看所有 | 编辑 | 输出到博客 | 历史版本