正则表达式 在开发中使用很多,为了以后更好的使用,最近重新学习整理了一下常用字符并整理了一些场景实例
语法学习
普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
字符 | 描述 |
---|---|
[] | 匹配[]中的任意字符,在数字、字母中加-表示范围,单独的-表示连接字符,^表示取反 |
\w | 匹配字母、数字、下划线,等价于 [A-Za-z0-9_] |
例,
[0-9] 匹配所有数字;
[a-z] 匹配所有小写字母;
[A-Z] 匹配所有大写字母;
[_-] 匹配下划线和连接字符(-);
[^a] 匹配除了a以外的所有字符;
非打印字符
字符 | 描述 |
---|---|
\cx | 匹配由x指明的控制字符 |
\f | 匹配一个换页符,等价于 \x0c 和 \cL |
\n | 匹配一个换行符,等价于 \x0a 和 \cJ |
\r | 匹配一个回车符,等价于 \x0d 和 \cM |
\s | 匹配所有空白符,包括空格、制表符、换页符等 |
\S | 匹配所有非空白符;等价于 [^ \f\n\r\t\v] |
\t | 匹配一个制表符,等价于 \x09 和 \cI |
\v | 匹配一个垂直制表符,等价于 \x0b 和 \cK |
例:
\cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符;
[\s\S] 匹配所有字符;
特殊字符
字符 | 描述 |
---|---|
? | 匹配文件名中的 0 个或 1 个字符,匹配 ? 字符,使用 \? |
* | 匹配零个或多个字符,匹配 * 字符,使用 \* |
+ | 匹配一个或者多个字符,匹配 + 字符,使用 \+ |
^ | 匹配输入字符串的开始位置,在[]中使用,表示不接受方括号表达式中的字符集合,匹配 ^ 字符,使用 \^ |
$ | 匹配输入字符串的结束位置,匹配 $ 字符,使用 \$ |
. | 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r],匹配 . 字符,使用 \. |
| | 指明两项之间的一个选择,匹配 |字符,请使用 \| |
( ) | 标记一个子表达式的开始和结束位置,子表达式可以获取供以后使用,匹配 ( ),使用 \( 和 \) |
[ | 标记一个中括号表达式的开始,匹配 [ 字符,使用 \[ |
{ | 标记限定符表达式的开始,匹配 { 字符,使用 \{ |
例:
{n} 匹配确定的 n 次,n 是一个非负整数;
{n,} 匹配至少n 次,n 是一个非负整数;
{n,m} 匹配 最少n 次且匹配最多 m 次,m 和 n 均为非负整数,n <= m
定位符
字符 | 描述 |
---|---|
\b | 匹配一个单词边界,即字与空格间的位置 |
\B | 匹配非单词边界 |
选择
字符 | 描述 |
---|---|
() | 将所有选择项括起来 |
| | 将相邻的选择项分隔开 |
() 表示捕获分组,() 会把每个分组里的匹配的值保存起来,这里有一个副作用会使相关的匹配被缓存,可用 ?: 放在第一个选项前来消除这种副作用。
?: 是非捕获元之一,除此之外还有两个非捕获元,
?= 正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
?! 负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串
场景实例
验证手机号码
/^[1][3,4,5,6,7,8,9][0-9]{9}$/
验证邮箱
/^([A-Za-z0-9_-.])+@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
验证身份证
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
验证url
/^((https?|ftp|file):\/\/)?([\da-z.-]+).([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
验证IPv4
/^(?:\(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
验证邮政编码
/^\d{6}$/
验证QQ号
/^[1-9][0-9]{4,10}$/
QQ号说明:5-11位的数字
验证微信号
/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/
微信号说明:6至20位,以字母开头,字母,数字,减号,下划线
验证车牌号
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/
验证密码
/(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}/
密码规则说明:密码中必须包含字母、数字、特称字符,至少8个字符,最多30个字符