1, 概念:正则表达式就是验证字符串的一种规则。
2, 常用的方法:
Test()检测字符串是否含有符合规则的字符,返回布尔类型的值。
Exec()检测字符串是否含有符合规则的字符,如果有返回匹配的值,否则返回null。
3, 表示字符集
【】中括号表示一个范围
[a-z] 表示小写字母
[A-Z] 大写字母
[0-9]
表示所有的数字
[za] z 或 a 二选1
[]中 ^ 代表 非
varreg = /[^a-z]/;
varstr = 123;
alert(reg.exec(str));
中括号外面 ^ 代表某个字符开始 $代表以某个字符结束
varreg = /^h[a-z]{8}d$/;
varstr = 'helloworld';
alert(reg.exec(str));
| 代表或
varreg = /a|b|c/;
varstr = 'a';
alert(reg.exec(str));
. 表示任意字符,但是不匹配 换行符(\n)
varreg = /./;
varstr = '*';
alert(reg.exec(str));
\ 转义字符,将后面字符原样输出
varreg = /\./;
varstr = 'www.hbsi.com';
alert(reg.exec(str));
常用的转义字符来表示 某个字符
\w 所有的字母数字下划线等于 [a-zA-Z0-9_]
varreg = /\w/; //匹配所有所有的字母数字下划线 [a-zA-Z0-9_]
varstr = 'www.hbsi.com';
alert(reg.exec(str));
\W 非 \w
\d 所有的数字
\D 所有的字符除了 数字
\s 空格
\S 所有字符,但是除了空格
\b 字符边界(boundary)
\D 所有的字符,但是除了字符边界
varreg = /\b/;
varstr = 'this is my book'; //is 替换成 was
alert(str.replace(/\bis\b/,'was'));
Unicode编码表示汉字
因为javascript内置的编码就是 unicode,4e00-9fa5
alert(String.fromCharCode(0x9fa5)); //需要注意:参数要求是16进制
varreg = /[\u4e00-\u9fa5]/;
varstr = '你好吗?';
alert(reg.exec(str));
4, 表示字符数量
{} 表示数量范围 {最小数量,最大数量}
{1,}表示1到任意个
{,2}表示最多2个
{3}表示3个
* 表示0次或多次
+ 表示最少一次
? 表示1次或0次
5, 分组的使用:
在正则表达式中,我们通过()将表达式分成若干部分,再通过RegExp对象的exec将匹配的结果以数组的形式返回
如果数组下标为0,返回的是整个表达式匹配的结果
如果数组下标为1,返回的是第一个分组匹配的结果
6, 模式修正符:对正则表达式的修饰
I ignoreCase 忽略大小写
g global 全局匹配
m multiline 多行匹配
正则默认情况下,一个字符串就是一行,即使换行符(\n),也会当做一行来执行,单行模式
7, 利用字符串处理正则表达式
字符串对象的方法处理正则表达式
Match() 将正则匹配的结果输出
Replace() 根据正则匹配的结果,进行字符串替换
Split() 字符串拆分,根据分隔符将字符串进行拆分