正则表达式的用途
- 测试字符串的某个模式
- 替换文本
- 根据模式匹配从一个字符串中提取子字符串
正则表达式的语法
var re = new RegExp('a');
var re = new RegExp('a', 'i');
g
全文查找, I
忽略大小写, m
多行查找 var re = /a/gi;
var re = /^xiao$/i
var re = /\s/;
\s匹配任何空白字符,包括空格、制表符、换页符等var re = /^[a-z]/i;
var re = /^[a-z]+\s+\d+$/i;
+至少出现一次,\d表示数字var re = /^[a-z]+\s(\d+)$/i;
用()来创建子匹配- 元字符:
(
[
{
\
^
$
|
)
?
*
+
.
- 使用元字符必须进行转义
- 如
var re = /\?/
, var re = new RegExp("\\?"); //匹配问号
- 预定义特殊字符
\n
换行符\r
回车符\t
制表符\f
换页符\cX
与X对应的控制字符\b
退格符\v
垂直制表符\0
空字符
- 预定义类
.
匹配除换行符之外的任何一个字符\d
匹配数字\D
非数字\s
匹配一个空白字符\S
非空白字符\w
匹配字母数字下划线\W
非字母数字下划线
- 量词
*
匹配>=0次+
匹配>=1次?
匹配0次或1次{n}
匹配n次{n,}
匹配>=n次{n,m}
匹配最少n次最多m次
- 贪婪量词匹配与惰性量词匹配
- 贪婪量词匹配会首先将整个字符串匹配,若不匹配则去掉最后一个字符匹配,依次进行。
- 惰性量词匹配会首先将第一个字符当成匹配,依次增加。
- 惰性量词仅仅在贪婪两次后面加
?
\d : 0-9之间的任意一个数字 \d只占一个位置
\w : 数字,字母 ,下划线 0-9 a-z A-Z _
\s : 空格或者空白等
\D : 除了\d
\W : 除了\w
\S : 除了\s
. : 除了\n之外的任意一个字符
\ : 转义字符
| : 或者
() : 分组
\n : 匹配换行符
\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数
^ : 限定开始位置 => 本身不占位置
$ : 限定结束位置 => 本身不占位置
[a-z] : 任意字母 []中的表示任意一个都可以
[^a-z] : 非字母 []中^代表除了
[abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符
String对象一些和正则表达式相关的方法
.match();
.replace();
.search();
.split();