练习1:匹配abc
练习2:包含一个a~z,后面必须是0~9 -->[a-z][0-9]或者[a-z]\d
* [a-z] : a~z
* [0-9]/\d : 0~9
练习3:必须第一个是字母,第二个是数字 -->^[a-z][0-9]$
* ^[a-z] : 表示首字母必须是a~z
* \d{2,10} : 数字有2到10
* [a-z]$ : 表示必须以a-z的字母结尾
练习4:必须第一个是字母,字母后面跟上4~9个数字
练习5:不能是数字0-9
* [^0-9] : 不能是0~9
练习6:QQ匹配:^[1-9]\d{4,11}$
都是数字
5~12位
并且第一位不能是0
练习7:手机号码匹配^1[3578]\d{9}$
1.以13/15/17/18
2.长度是11
字面量
var reg = /\bis\b/; \b 单词边界
'He is a boy. This is a dog. Where is she?'.replace(reg,'IS')
替换结果: "He IS a boy. This is a dog. Where is she?"
如果想要全部替换
var reg = /\bis\b/g; g global 全局匹配
e is a boy. This is a dog. Where is she?'.replace(reg,'IS');
替换结果: "He IS a boy. This IS a dog. Where IS she?"
构造函数
// \\bis\\b 连个\\ 第一个表示转译
var reg = new RegExp('\\bis\\b', 'g');
var reg = new RegExp('\\bis\\b');
'He is a boy. This is a dog. Where is she?'.replace(reg,'IS');
"He IS a boy. This is a dog. Where is she?"
var reg = new RegExp('\\bis\\b', 'g');
'He is a boy. This is a dog. Where is she?'.replace(reg,'IS');
"He IS a boy. This IS a dog. Where IS she?"
修饰符
- g :
global
全文搜索, 不添加, 搜索到第一个匹配停止. - i :
ignore case
忽略大小写, 默认大小写敏感. - m :
multiple lines
多行搜索 - \b : 单词边界
'He is a boy. Is he?'.replace(/\bis\b/g,'0'); 只全局匹配到了 小写的 is
"He 0 a boy. Is he?"
'He is a boy. Is he?'.replace(/\bis\b/gi,'0'); 全局匹配, 忽略大小写
"He 0 a boy. 0 he?"
元字符
正则表达式由两种基本字符类型组成:
原义文本字符, 如:
abc
;元字符: 是正则表达式中有特殊含义的非字母字符, 如:
* + ? $ ^ . | \ () {} []
字符 | 含义 |
---|---|
\t |
水平制表符 |
\v |
垂直制表符 |
\n |
换行符 |
\r |
回车符 |
\0 |
空字符 |
\f |
换页符 |
\cX |
与X对应的控制字符(Ctrl + X) |
// 匹配 a 或者 b 或者 c
'a1b2c3d4'.replace(/[abc]/g,'X');
"X1X2X3d4"
字符类取反
- 使用元字符
^
创建反向类/ 负向类 - 反向类的意思就是不属于某类的内容
- 表达式
[^abc]
表示不是字符a或者b或者c
的内容
'a1b2c3d4'.replace(/[^abc]/g,'X') 把非 abc 的字符替换成了X .
"aXbXcXXX"
范围类
- 正则表达式还提供了 范围类.
- 所以我们可以使用
[a-z]
来连接两个字符表达式从 a 到 z 的任意字符
. - 这是个闭区间, 也就是
包含 a 和 z 本身
'a1b2d3x4z9'.replace(/[a-z]/g,'Q');
"Q1Q2Q3Q4Q9"
在[]
组成的类内部是可以连写的 [a-zA-Z]
'a1b2d3x4z9ABCDEFG'.replace(/[a-zA-Z]/g,'Q')
"Q1Q2Q3Q4Q9QQQQQQQ"
如果要匹配范围类里面的-
'2016-09-12'.replace(/[0-9]/g,'Q')
"QQQQ-QQ-QQ"
加 -
就可以匹配 -
了
'2016-09-12'.replace(/[0-9-]/g,'Q')
"QQQQQQQQQQ"
预定义类
字符 | 等价类 | 含义 |
---|---|---|
. |
[^\r\n] |
除了回车符和换行符之外的所有字符 |
\d |
[0-9] |
数字字符 |
\D |
[^0-9] |
非数字字符 |
\s |
[\t\n\x0B\f\r] |
空白字符 |
\S |
[^\t\n\x0B\f\r] |
非空白字符 |
\w |
[a-zA-Z_0-9] |
单词字符 (字母、数组下划线) |
\W |
[^a-zA-Z_0-9] |
非单词字符 |