正则就是炒鸡字符串,可以用来做表单验证。
声明正则表达式
- 通过new运算符声明
- 省略new创建正则表达式
-
可以通过正则常量赋值
i 忽略大小写
g 全局匹配
m 换行匹配
var box = new RegExp("box", 'ig');
alert(box); ///box/gi
var box = RegExp("box", 'ig');
alert(box); ///box/gi
var box = /box/ig;
alert(box);
正则对象的方法
test()
格式:正则.test(字符串);
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回true,否则返回false
var str = 'This is a Box';
alert(/box/i.test(str));//true
exec()
格式:正则.exec(字符串)
功能:在字符串中匹配正则是否存在。
返回值:如果匹配成功,返回匹配到的字符串,
如果匹配失败,返回null
返回值是数组。
var str = 'This is a Box';
alert(/box/i.exec(str));//Box
在字符串中可以使用正则表达式的方法
match
格式:字符串.match(正则)
功能:在字符串中匹配正则是否存在。
返回值:匹配成功,返回数组,装有匹配到的字符串
匹配失败,返回null
var str = "This is a box Box";
alert(str.match(/box/ig));//box,Box
replace
格式:字符串.replace(oldStr/正则, newStr);
功能:用newStr字符串替换oldStr,返回一个新字符串。
返回值:原字符串不会被修改,返回替换成功以后的新字符串。
var str = 'This is a box Box';
var newStr = str.replace(/box/ig, "xxx");
alert(newStr);//This is a xxx xxx
search
格式:字符串.search(字符串/正则);
功能:查找子字符串在字符串中第一次出现的位置。
返回值:如果找不到返回-1,否则返回出现的位置。
var str = "This is a Box box";
alert(str.search(/box/i));//10
split
格式:字符串.split(分割符/正则);
功能:用分割符将字符串,分割成子串,放在数组中
返回值:数组
var str = "This is a Box box";
// alert(str.split(" "));//This,is,a,Box,box
alert(str.split("b"));//This is a Box ,ox
alert(str.split(/b/i));//This is a ,ox ,ox
元字符
单个元字符
.
匹配任意一个字符
[a-z] 限定匹配一个小写字母
[a-zA-Z0-9_] 限定匹配一个字符,必须是数字、字母下划线
[^a-zA-Z0-9_] 匹配一个字符,这个字符不能是前面这个范围的字符。
\w 等价于 [a-zA-Z0-9_]
\W 等价于 [^a-zA-Z0-9_]
\d 等价于 [0-9]
\D 等价于 [^0-9]
\s 匹配一切单个的空白字符 tab 空格 回车(\n)
\S 匹配单个非空白字符
锚字符
^ 限定行首匹配
$ 限定行尾匹配
重复字符:
x? 匹配一个或者0个x字符。
x+ 匹配至少一个x字符。
x* 匹配任意个x字符
x{m,n} 匹配至少m个最多n个字符
x{m}匹配m个字符
(xyz)+ 小括号括起来的部分,当做单个字符匹配
替代字符
| 匹配其中一项就行。
正则练习题(看看思路)
验证是否是正确的邮政编码的正则
var box = /^[1-9]\d{5}$/;
var str = "266011";
alert(box.test(str));
判断一个文件是否是压缩包
var box = /^\w+\.(zip|rar|rg)$/i;
var str = '123abc.zip';
alert(box.test(str));
删除多余的空格
var str = " h e l l o ";
var box = /\s/g;
alert(str.replace(box, ""));
删除首尾的空格
var str = " h e l l o ";
var box = /^\s+|\s+$/g;
alert("|" + str.replace(box, "") + "|");
普通版本的电子邮箱验证
var box = /^\w+@\w+\.\w{2,5}$/ig;
var str = "tianyufei@1000phone.net";
alert(box.test(str));