一、正则表达式
正则表达式是一个对象,功能和字符串一样,都是用来对字符串进行【模式匹配】和【文本检索】与【替换】。
正则表达式能替代字符串去做一些复杂的操作,而且做的比字符串还要漂亮。
二、正则表达式的声明
1)、通过new运算符声明
第一个参数 传入的是生成正则表达式的字符串
第二个参数 传入修饰符
i 忽略大小写
g 全局匹配
m 换行匹配
var box = new RegExp("box", "ig");
alert(box);
2)、省略new
var box = RegExp("box", "ig");
alert(box);
3)、可以通过正则常量赋值
var box = /box/ig;
2、正则表达式的方法
1)、test
格式:正则.test(字符串)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功返回true,否则返回false
例:
var str = 'This is Box';
var box = /box/;
alert(box.test(str));
运行结果:false
2)、exec
格式:正则.exec(字符串)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回匹配成功字符串的数组,
如果匹配失败返回null。
var str = 'This is Box';
var box = /box/i;
alert(box.exec(str));
运行结果: Box ;
三、在字符串中的函数中使用正则表达式
1、match()
格式:字符串.match(正则)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回匹配成功字符串的数组,
如果匹配失败返回null。
/*var str = 'This is a Box';
var box = /box/i;
alert(str.match(box));
运行结果:Box
2、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)
运行结果:how old are old are old are you
3、search()
格式:字符串.search(正则);
返回值:查找到的下标
-1 没有查找到
var str = "how aRe are are aRe you";
var box = /are/i;
alert(str.search(box));
运行结果:4
4、 split()
功能:字符串.split(分割符/正则)
返回值:数组,放着用分割符分割完毕的子串。
var str = "IAamABoy";
var arr = str.split(/A/i);
alert(arr);
运行结果:I,m,Boy
四、正则的例子
1、检查邮政编码
var box = /[1-9]\d{5}/;
alert(box.test(266000));
运行结果: true
2、检查文件压缩包
var box = /\w+\.zip|rar|rg/;
alert(box.test("1aewf.zip"));
运行结果: true
【注】如果你要在正则中用元字符本来的字符,需要通过转义字符,转义一下。
3、匹配单个的中文
var box = /^[\u4e00-\u9fa5]$/;
alert(box.test("1"))
运行结果:false
4、删除多余空格
var str = "hello world";
alert(str.replace(/\s/g, ""));
运行结果:helloworld
【注】删除多余空格必须要全局匹配
5、删除首尾空格
var str = " hello world ";
var newStr1 = str.replace(/^\s+/g, '');
var newStr2 = newStr1.replace(/\s+$/g, "")
alert("|" + newStr1 + "|");
alert("|" + newStr2 + "|");
运行结果: |hello world |
|hello world|
【注】删除首尾空格时,也要全局匹配;