正则表达式 是一个对象
功能和字符串一样,都是用来对字符串进行【模式匹配】和【文本检索】与【替换】。
正则表达式能替代字符串去做一些复杂的操作,而且做的比字符串还要漂亮
【注】正则表达式可以理解成一个super String。
正则表达式声明
1、通过new来声明
var box = new RegExp("box", "ig");
第一个参数 传入的是生成正则表达式的字符串
第二个参数 传入修饰符
i 忽略大小写
g 全局匹配
m 换行匹配
2、省略new
var box = RegExp("box", "ig");
3、可以通过正则常量赋值
var box = /box/ig;
正则表达式的方法
test
格式:正则.test(字符串)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功返回true,否则返回false
exec
格式:正则.exec(字符串)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回,匹配成功字符串的数组,
如果匹配失败返回null。
在字符串的函数中使用正则
match()
格式:字符串.match(正则)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回匹配成功字符串的数组,
如果匹配失败返回null。
例:
var str = 'This is a Box';
var box = /box/i;
alert(str.match(box));
repalce 字符串替换
格式:str.replace(oldStr/正则, newStr);
返回值:替换完成的新字符串。
例:
var str = "how are are aRe you";
var box = /are/gi;
var newStr = str.replace(box, "old are");
alert(newStr);
search 通过内容查找下标
格式:字符串.search(正则);
返回值:查找到的下标
-1 没有查找到
例:
var str = "how aRe are are aRe you";
var box = /are/i;
alert(str.search(box));
split 通过分割符将字符串分割成数组
功能:字符串.split(分割符/正则)
返回值:数组,放着用分割符分割完毕的子串。
例:
var str = "IAamABoy";
var arr = str.split(/A/i);
alert(arr);
元字符:正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的方式。
单个字符的元字符
在这里插入代码片
. 匹配换行符以外的任意字符
[a-z] 限定匹配单个字符的范围
[a-zA-Z0-9_] 限定匹配单个字符的范围是数字、字母、下划线
[^0-9] 限定匹配单个字在这里插入代码片符的范围,除这个范围外的字符
\w 限定匹配单个字符的范围是数字、字母、下划线
\W [^a-zA-Z0-9_] 限定匹配单个字符的范围是非数字、字母、下划线
\d 限定匹配单个字符的范围是数字
\D 限定匹配单个字符的范围是非数字
例:var str = "gaogle";
var box = /g\dogle/;
alert(box.test(str));
空白字符
\s 可以匹配一个任意的空白字符
\S 可以匹配一个任意的非空白字符
锚字符
^ 限定行首匹配
$ 限定行尾匹配
【注】如果同时加行首和行尾,那么字符串只能是这个正则。
重复字符(x代表的是单个字符)
x? 匹配1个或者0个x字符
x+ 匹配至少一个x字符
x* 匹配任意个x字符
x{m,n} 匹配最多n个x字符,最少m个x字符
x{m}匹配m个字符
(abc)+ 用小括号括起来多个字符,那么这多个字符,会被当做一个字符匹配
替代字符
google|baidu|bing 可以匹配谷歌、百度和必应中的任意一个
正则表达式的书写
例:
if(/^\d+$/.test(oValue) || /^[a-z]+$/.test(oValue) || /^[A-Z]+$/.test(oValue)){
}else if(/\d/.test(oValue) && /[a-z]+/.test(oValue) && /[A-Z]+/.test(oValue)){
}