正则表达式:
验证别的字符串是否符合规则
正则表达式对象有两种
1、使用构造函数的方式
var r=new RegExp("good","ig");
这个规则是
1)要求必须有good这个单词
2)i表示忽略大小写,g表示全局
2、直接量的方式
var r=/good/ig; 和var r=new RegExp("good","ig");方法相同
属性:
global:全局
ignoreCase:忽略大小写
source:正则表达式中的字符串
Multiline:RegExp 对象是否具有标志 m。 不只匹配一行。
方法:
exec(字符串):
test(字符串):返回值是boolean
使用RegExp对象的字符串函数
字符串中使用正则作为参数的几个函数:
1、match():获取匹配数组
2、search():查找匹配数据
3、replace():替换匹配到的数据(找到并替换)
4、split():拆分成字符串数组
正则表达式的特殊字符:
^:例如:var r=/^hello/;以h开头第二个是e,第三个是l,以此类推,即以hello开头
$:例如:var r=/hello$/;以hello结尾的
var r=/^hello$/;只能是hello
.:例如: var r=/^h...o$/;中间可以出现三个字符
*:例如:var r=/^h*o$/;中间可以出现多个相同的字符
+:可以有一个或多个字符
?: 匹配前面元字符0次或1次,/ba?/将匹配b,ba
x|y:例如: var r=/^he|bo$/:可以出现e或者b
[xyz]:匹配这个集合中的任意一个字符,例如:[a-z]表示在小写a到小写z之间
[^xyz]:不匹配这个集合中的任何一个字符,同样可以写范围
{n}:精确匹配n次
{n,}:匹配n次以上
{n,m}:匹配n到m之间(包含n、m)任意次数
\b:匹配一个单词的边界(单词是以空格分隔的) 例如:hello中的h和o
var r=/\hb/:是否有某个单词是h开头的
var r=/h\b/:是否有某个单词是h结尾的
\ddd:匹配以八进制数ddd规定的字符 例如:var reg=/\141/; 等价于 var reg=/a/;
\xdd:匹配以十六进制数dd规定的字符
\uxxxxx:匹配以十六进制数xxxx规定的Unicode字符
直接量字符(转义字符):
\/:一个/的直接量
常见正则:
检查邮政编码:例如:var reg=/^[1-9]\b{5}$/; 六位数字,不能以0开头
检查电子邮箱:例如:var reg=/^[a-zA-Z0-9]+@[a-zA-Z0-9]+(\.com|\.cn|\.net)$/; 以若干数字字母开头,紧接着是@,紧接着这是若干数字字母,紧接着是.com或.cn或.net
检查手机号码:例如:var reg=/^1[3-9]\d{9}$/; 以1开头,第二位不能为0、1、2,紧接着是9个数字
检查身份证号码: 例如:var reg=/^\d{17}[0-9X]$/; 前面是17位数字,最后一位是数字或者X
检查出生日期:例如:var reg=/^\d{4}[\-\.\/]\d{2}[\-\.\/]{2}$/; 仅供参考 以后以控件为主
检查用户名:例如:var reg=/^[a-zA-Z_]\w{5,14}$/; 只能使用数字字母下划线,且数字不能开头,长度在6-15之间
检查ip地址:例如:var reg= /^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/ ; 由三个点分隔的四个数字,每个数字都是0-255
检查文件压缩包:例如: var reg=/^\w+(zip|gz|rar)$/;
删除多余空格:例如:str.replace(/\s+/,");