此处转载总结自菜鸟教程.
RE 最常用的功能之一, 提交表单. 例如:
用户注册表单时, 只允许用户名包含字符, 数字, 下划线和连接字符 (-), 并设置用户名的长度为 3-15 个字符
匹配模板为 ^[a-z 0-9 _-]{3,15}$
实际上正则表达式有三个作用:
1. 数据验证, 测试字符串内的模式是否匹配.
2. 替换文本, 可以使用正则表达式来识别文档中的特定文本, 完全删除该文本或者用其他文本替换它.
3. 基于模式匹配从字符串中提取子字符串, 可以查找文档内或输入域内特定的文本.
语法:
构造正则表达式的方法和创建数学表达式的方法一样. 也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式. 正则表达式的组件可以是单个的字符, 字符集合, 字符范围, 字符间的选择或者所有这些组件的任意组合.
正则表达式是由普通字符 (例如字符 a 到 z) 以及特殊字符 (称为 "元字符") 组成的文字模式.
模式描述在搜索文本时要匹配的一个或多个字符串. 正则表达式作为一个模板, 将某个字符模式与所搜索的字符串进行匹配.
字符:
1. 普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符. 这包括所有大写和小写字母, 所有数字, 所有标点符号和一些其他符号.
2. 元字符
(1) 非打印字符.
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\s 匹配任何空白字符, 包括空格, 制表符, 换页符等等.==\f\n\r\t\v
\S 匹配任何非空白字符.==[^\f\n\r\t\v]
(2) 特殊字符.(匹配特殊字符需要加 \ 转义)
$ 匹配输入字符串的结尾位置.
( ) 子表达式首位标记
* 匹配前面的子表达式零次或多次.=={0,}
+ 匹配前面的子表达式一次或多次.=={1,}
. 匹配除换行符 \n 之外的任何单字符.
[ 标记一个中括号表达式的开始.
? 匹配前面的子表达式零次或一次, 或指明一个非贪婪限定符.=={0,1}
\ 将下一个字符标记为或特殊字符, 或原义字符, 或向后引用, 或八进制转义符.
^ 匹配输入字符串的开始位置, 在方括号表达式中使用时为逻辑非.
{ 标记限定符表达式的开始.
| 指明两项之间的一个选择. 逻辑或.
(3) 限定符, 贪婪匹配与非贪婪 (最小) 匹配
* 匹配前面的子表达式零次或多次.=={0,}
+ 匹配前面的子表达式一次或多次.=={1,}
? 匹配前面的子表达式零次或一次, 或指明一个非贪婪限定符.=={0,1}
{n} n 是一个非负整数. 匹配确定的 n 次.
{n,} n 是一个非负整数. 至少匹配 n 次.
{n,m} m 和 n 均为非负整数, 其中 n <= m. 最少匹配 n 次且最多匹配 m 次.
来源: http://www.bubuko.com/infodetail-3340328.html