正则表达式

正则表达式

正则表达式(英语: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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值