^
The caret (^) tells the regular expression that the character must not match the
characters to follow.
比如要匹配所有除了a或b的字符,字符类可以这么写[^ab]
^
定位符规定匹配模式必须出现在目标字符串的开头
那是否说^
在[ ]
里面
就表示排除(负向类)
,在[ ]
前面
就表示要在开头
?
$
定位符规定匹配模式必须出现在目标对象的结尾
-
范围类,如要匹配a到z的所有字母,字符类可以这么写[a-z]
{n}
出现多少次
/^[0-9]{7}$/
匹配的就是一个仅包含7个数字的字符串
7.1 RegExp 对象可以有一个或两个参数.
var reCat = new
RegExp
("cat")
//这个表达式只会匹配字符串中出现的第一个"cat"
var reCat = new
RegExp
("cat","g")
//匹配所有出现的"cat"
正则表达式字面量
var reCat =
/cat/gi
;
注意字面量不需要放在引号里
判断某个字符串是否匹配指定的模式
RegExp.test(str)
如果给定的字符串匹配这个模式,返回true
,否则返回false
. reCat.test("cat")
//返回true
RegExp.
exec(str)
返回一个数组
,数组中第一个条目是第一个匹配,其他是反向引用
String.match(reCat)
返回一个包含在字符串中的所有匹配
的数组
var toMatch = "a bat, a cat, a fAt baT, a faT cat";
var reAt = /at/gi;
var arrMatchs = toMatch.match(reAt);
返回一个数组["at","at","At","aT","aT","at"]
String.search(reCat)
与indexOf
类似,返回在字符串中出现的第一个
匹配的位置
,全局匹配表达式g
在这里不起作用
toMatch.search(reAt);
//输出3
String.replace(matchStr, replaceStr)
用第二个参数替换
某个子串(第一个参数)的所有匹配
. 第一个参数
既可以是匹配的字符串
,也可以是用于匹配的一个正则表达式
,
返回是替换后的整个字符串
var sToChange = "The sky is red";
var reRed = /red/;
sToChange.replace(reRed,"blue"
); //输出The sky is blue
String.split(reCat)
将字符串分割
成子串,作为数组
返回
var sColor = "red, blue, yellow";
var reExp = /\,/;
var arrs = sColor.split(reExp); //得到一个数组["red","blue","yellow"
]
注意逗号
在正则表达式有
特殊含义
,这边需要转义
7.2 简单模式(元字符
,字符类
,量词
)
元字符
12个 ( [ { \ ^ $ | ) ? * + .
要匹配字符串中的元字符,需要转义
/\^/
注意var reMark = new RegExp("\\^");
当正则表达式以非字面量的形式
表示时,所有的反斜杠"\"
都要用两个反斜杠"\\"
来替换.因为javascript字符串解析器
会按照翻译\n
的方式尝试翻译\?.为了保证不会出现这个问题,在元字符的前面加上两个反斜杠,
我们称之为双重转义
.(不太懂这个解释,我的理解是\
本身也是元字符,先要对它转义得到
"\"
,然后再用这个"\"
对接下来的元字符转义)
预定义的特殊字符
|
\t
|
制表符
|
\n
|
换行符
|
\r
|
回车符
|
\f
|
换页符
|
\a
|
Alert
字符
|
\e
|
Escape
字符
|
\cX
|
与
X
相应的控制字符
|
\b
|
回退字符
|
\v
|
垂直制表符
|
\o
|
空字符
|
字符类
将一些字符放入方括号中
.
1, 简单类
var toMatch = "a bat, a cat, a fAt baT, a faT cat";
var reg =
/[bcf]at/gi
;
var arrs = toMatch.match(reg);
返回的数组[“bat”, “Cat”, “fAt”, “baT”, “faT”, “cat”]
2,负向类
可以指定要排除的字符
,^
要在[ ]
里面
匹配除了
a
和b
以外的所有字符,那么这个字符类为[^ab]
. 脱字符^
告诉正则表达式字符不能匹配后面
跟着的字符
只想获得包含at但不能以b或c开头的字符, /[^bc]at/gi
3, 范围类
[a-z]
匹配所有小写字母
结合负向类可以排除给定范围内的所有字符
,例如要排除字符1~4,可以使用类[^1-4]
4, 组合类
[a-z1-9\n]