正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
作用:1、用于表单数据的验证
2、方便爬取其他网站的数据
3、内容的替换、获取
4、手机号的替换
5、敏感词替换
正则的创建
1、字面量创建
var regexp = /正则表达式/修饰符;
用法:
var reg = /hello/;
2、构造方法(以对象的方式创建)
var regexp = new RegExp("正则表达式"修饰符);
用法:
var reg = new RegExp('hello');
修饰符说明:
1)i 忽略大小写
2)g 全局匹配
3)gi 全局匹配加忽略大小写
注意:只要写在“/”和“/”之间的内容就是正则表达式
RegExp对象的用法(使用正则对象调用)
1)test( )方法的使用
成功返回true,失败返回false
var str = "乘风破浪会有时 直挂云帆济沧海";
//var reg = new RegExp('乘风破浪'); //判断是否有乘风破浪
//var reg = /乘风破浪/;
var ret = reg.test(str);
console.log(ret);
2)exec( )方法——只能找到第一个
成功返回数组,失败返回null
var str = 'js离离原上js草,一岁一枯荣。野火烧不尽,春风吹又生js。远芳侵古道,js晴翠接荒城。又送王孙去,萋萋满别情';
var ret = new RegExp('js');
var tnt = ret.exec(str);
console.log(tnt);
注意:test,exec都是先写正则在写函数var tnt = 正则.exec(内容);
正则表达式字符串调用函数
1)search( )
成功返回下标
var str = "I have a dream!";
var n = str.search(/dream/);
2)match( )
成功返回数组
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g);
3)replace( ) 替换
var str = 'js8真厉害88';
console.log(str.replace(/8/g, 6));
注意:字符串的写法,先写内容在写正则
正则语法
1)正则字符类
[a-z] 匹配a-z任意一个字符
[A-Z] 匹配A-Z任意一个字符
[a-zA-Z] 匹配26个英文字母(大小写)
[0-9] 匹配一个数字 [0-9a-zA-Z_]
匹配数字,字母,下划线
[^0-9] 匹配非数字
[^a-zA-Z] 匹配非字母
2)常用字符串
\d 数字0-9
\D 非数字
\w 字母数字下划线
\W 非字母数字下划线
\s 空白符
\S 非空白符
. 匹配任意字符
^ 以……开头
$ 以……结尾
3)重复字符
* 重复0次或者多次
+ 至少一次
? 最多一次
{n} 刚好n次
{n.} 最少n次
{n,m} n到m次
[abc] 匹配任意字符
( | ) 匹配任意字符串
.在js中有特殊的作用,使用\将其转义为普通字符
案例:
//邮政编码检验
// var str = '123456';
// var nnt = /^\d{6}$/;
// console.log(nnt.test(str));
//文件格式检测
// var str = 'gauiyogfa.jpg';
// var snt = /\.(txt|doc|jpg)/;
// console.log(snt.test(str));
//字符串首部去除空格
// var stn = ' I LOVE YOU';
// var ren = /\s/g;
// console.log(stn.replace(ren, ''));
//邮政地址检测
// var stb = '574756984@qq.com';
// var snn = /^[0-9a-zA-Z]{1}[0-9a-zA-Z]{2,14}@[a-z]{2,9}\.(cn|com|not)$/;
// console.log(snn.test(stb));
//手机号码的替换
var phone = '18336629253';
var reg = /(\d{3})\d{5}(\d{3})/;
// 表示匹配完成,引用匹配的结果,$n,引用匹配的结果
console.log(phone.replace(reg, '$1*****$2'));
中文检测
常用字符都存在一个编码的规则,对于中文的编码一般都是使用utf-8编码,并且js天生使用的就是utf-8对待字符串。并且utf-8的编码是存在一个范围的[\u4e00-\u9fa5]
[\u4e00-\u9fa5]
<script>
var val = '幸福从追求开始';
// 检测两个汉字
var reg1 = /^[\u4E00-\u9FA5]{2,4}$/;
console.log(reg1.test(val))
</script>