Javascript之正则表达式

什么是正则表达式? 对字符串内容进行格式和内容的验证,所有的计算机语言,正则表达式都是相同的通用的

正则表达式的基本语法
①字面量(常用),使用 // 来包裹表达式内容,var 变量 = /正则表达式/
②构造函数,var 变量 = RegExt(‘正则表达式’);

正则表达式的使用方法
①验证:
判断字符串内容是否符合正则表达式的规范
执行结果是 布尔类型
语法 : 正则表达式.test(‘字符串内容’);
②捕获:
捕获获取字符串中符合正则表达式规范的内容
执行结果是捕获获取到的符合规范的字符串内容
语法 : 正则表达式.exec(‘字符串内容’)

常用语法规范:正则表达式中不要随便写空格,空格也会作为验证格式的一部分
元字符: 使用一些符号来表示规范
\d 表示数字
\D 表示非数字
\w 表示数字,字母,下划线
\W 表示非数字,字母,下划线
\s 表示空格
\S 表示非空格
. 表示非换行,字符串中的换行使用转义符 \n 表示
正则表达式和转义符都是 \内容的形式,JavaScript会自动识别。如果是 \内容,符合正则表达式就按照正则表达式来执行,符合转义符就按照转义符的形式执行。正则表达式和转义符是不会冲突的

        // 只要有数字即可,不用都是数字
        var reg1 = /\d/ ;
         console.log(reg1.test('123456')) ;
         console.log(reg1.test('abcd')) ;
         console.log(reg1.test('1234abcd')) ;
         
        // 只要没有数字,就是true
        var reg2 = /\D/;
         console.log(reg2.test('123456')) ;
         console.log(reg2.test('abcd')) ;
         console.log(reg2.test('1234abcd')) ;

        var reg3 = /\w/;
         console.log( reg3.test('123avbc_') );
         console.log( reg3.test('!@#$%^') );
         console.log( reg3.test('1234!@#$%^') );

        var reg4 = /\W/;
         console.log( reg4.test('123avbc_') );
         console.log( reg4.test('!@#$%^') );
         console.log( reg4.test('1234!@#$%^') );
        
        var reg5 = /\s/;
         console.log( reg5.test('      ') );
         console.log( reg5.test('312斤kfjisa') );
         console.log( reg5.test('312斤 kfjisa') );

        var reg6 = /\S/;
         console.log( reg6.test('      ') );
         console.log( reg6.test('312斤kfjisa') );
         console.log( reg6.test('312斤 kfjisa') );

        var reg7 = /./;
        console.log( reg7.test('\n') );

在这里插入图片描述
边界符:^表示开头,$表示结尾

        // 以数字开头即可,之后的内容不做限定
        var reg1 = /^\d/;
         console.log(reg1.test('123'));
         console.log(reg1.test('123abc'));
         console.log(reg1.test('abc123'));

        // 以数字结尾就看结尾,之前有什么内容不管
        var reg2 = /\d$/;
         console.log(reg2.test('123'));
         console.log(reg2.test('123abc'));
         console.log(reg2.test('abc123'));

        // 如果开头结尾都加上了,限定效果就不同了。只能有一个字符串,并且这个字符是数字,只能有一个数字字符。字符个数、内容不符合都不行
        var reg3 = /^\d$/;
         console.log(reg3.test('1')); //这个是true,只有1个数字字符
         console.log(reg3.test('-1'));
         console.log(reg3.test('a'));
         console.log(reg3.test('123'));
         console.log(reg3.test('123abc'));
         console.log(reg3.test('abc123'));
         console.log(reg3.test('123abc123'));        

在这里插入图片描述
限定符:限定出现次数, 一般都要和边界符配合使用,否则执行效果有问题
* 表示允许的次数是0至正无穷次,有没有都行
+ 表示允许的次数是1至正无穷次,至少有一个
? 表示允许的次数是0至1,最多有一次
{n} 表示允许的次数是n次n的数值,是自定义数值
{n,} 表示允许的次数是n次以上,包括n次,最少是n次,多个不管。也就是 n至正无穷次
{n,m} 表示允许的次数是n至m次,包括n和m

         // 只能是数字字符,字符个数没有要求
         var reg4 = /^\d*$/;
         console.log( reg4.test('1') );
         console.log( reg4.test('') );
         console.log( reg4.test('123') );
         console.log( reg4.test('123abc') );
         console.log( reg4.test('123abc123') );

         //必须是数字字符,至少出现1个数字字符
         var reg5 = /^\d+$/;
         console.log( reg5.test('1') );
         console.log( reg5.test('') );
         console.log( reg5.test('123') );
         console.log( reg5.test('123abc') );
         console.log( reg5.test('123abc123') );

        // 必须是数字字符,最多只能有0个或者1个字符
         var reg6 = /^\d?$/;
         console.log( reg6.test('1') );
         console.log( reg6.test('') );
         console.log( reg6.test('123') );
         console.log( reg6.test('123abc') );
         console.log( reg6.test('123abc123') );

        // 只能是3个数字字符
         var reg7 = /^\d{3}$/;
         console.log( reg7.test('1') );
         console.log( reg7.test('') );
         console.log( reg7.test('123') );
         console.log( reg7.test('123abc') );
         console.log( reg7.test('123abc123') );

        // 必须都是数字字符,并且至少有一个数字字符
         var reg8 = /^\d{1,}$/;
         console.log( reg8.test('1') );
         console.log( reg8.test('') );
         console.log( reg8.test('123') );
         console.log( reg8.test('123abc') );
         console.log( reg8.test('123abc123') );

        // 必须都是数字字符,1至3次
         var reg9 = /^\d{1,3}$/;
         console.log( reg9.test('1') );
         console.log( reg9.test('') );
         console.log( reg9.test('123') );
         console.log( reg9.test('123abc') );
         console.log( reg9.test('123abc123') );

在这里插入图片描述

特殊符号:
\可以表示正则表达式的规范或者是转义符,设定是不冲突的,符合哪个就执行哪个
|表示逻辑或的关系,表示两个规范,满足哪个都可以。如果要表示多种内容并且限定字符个数,公式 : (内容1|内容2|内容3…){次数限定}
(),将()中的内容作为一个整体来执行,确保执行正确
[],在[]中设定的内容任意满足其中一个就可以
-表示在这个范围内的就可以a-d
[^内容] 表示非内容,必须写在 / / 之外,/正则表达式/i ,/正则表达式/g
一般是与其他的函数配合使用,i忽略大小写,g全局匹配

逻辑或的判定
①内容的判断,正常的判断
②个数的判断,只要是包含个数就可以
内容可以是数字、字母、下划线、字符,只要是3个就行,不能少但可以多
数字或者数字字符下划线,并且个数只能是三个var reg1 = /^(\d|\w){3}$/;也可以

         var reg1 = /^\d{3}$|^\w{3}$/;
         console.log( reg1.test( '123' ) );
         console.log( reg1.test( 'abc' ) );
         console.log( reg1.test( '1234' ) );
         console.log( reg1.test( 'abcd' ) );
         console.log( reg1.test( '1!1' ) );
         console.log( reg1.test( 'a&b' ) );
         console.log( reg1.test( 'ab' ) );
         console.log( reg1.test( '12' ) );
         console.log( reg1.test( '12&12' ) );
         console.log( reg1.test( 'ab&ab' ) );

        // 内容只能是 a b c d 4个字符,多了不可以
        var reg2 = /^[abcd]$/;
         console.log( reg2.test('a') );
         console.log( reg2.test('b') );
         console.log( reg2.test('c') );
         console.log( reg2.test('d') );
         console.log( reg2.test('ab') );
         console.log( reg2.test('abc') );
         console.log( reg2.test('abcd') );
         console.log( reg2.test('bc') );
         console.log( reg2.test('bcd') );
         console.log( reg2.test('cd') );

         //a-d之间的字符,只能是一个
        var reg3 = /^[a-d]$/;

         console.log( reg3.test('a') );
         console.log( reg3.test('b') );
         console.log( reg3.test('c') );
         console.log( reg3.test('d') );
         console.log( reg3.test('ab') );
         console.log( reg3.test('abc') );
         console.log( reg3.test('abcd') );
         console.log( reg3.test('bc') );
         console.log( reg3.test('bcd') );
         console.log( reg3.test('cd') );

         //字符范围不再 a-d 之前,并且是一个字符
        var reg4 = /^[^(a-d)]$/;
        console.log( reg4.test('a') );
        console.log( reg4.test('b') );
        console.log( reg4.test('c') );
        console.log( reg4.test('d') );
        console.log( reg4.test('ab') );
        console.log( reg4.test('abc') );
        console.log( reg4.test('abcd') );
        console.log( reg4.test('bc') );
        console.log( reg4.test('bcd') );
        console.log( reg4.test('cd') );
        console.log( reg4.test('z') );

在这里插入图片描述

其他配合函数
①search(),字符串查找函数。在字符串中查找是否有符合的内容,如果有返回下标,没有返回-1,返回的是第一个符合内容的索引下标
indexOf() 也是查找,也返回索引下标,但是不支持正则表达式

var str1 = 'abcdefgab';
// 默认是区分大小写的
console.log( str1.search('ab') );
console.log( str1.search('B') );

// 正则表达式不区分大小写
console.log( str1.search(/B/i) );

console.log( str1.indexOf('b') );
//indexOf() 不支持正则表达式
console.log( str1.indexOf(/B/i) );

②match(),找到符合规范的字符串并且返回内容,默认只会执行一次并且返回第一次符合规范的内容

var str2 = 'abcdefgabcdefg';
var arr1 = str2.match('ab');
// 正则表达式匹配全局
var arr2 = str2.match(/ab/g);
console.log(arr1);
console.log(arr2);

③replace(),字符串替换,默认只替换第一个符合的内容

var str3 = 'abcd啊abcd啊abcd啊abcd';
// 默认值替换第一个
str3 = str3.replace('啊' , '额');
        
// 正则表达式替换全局
str3 = str3.replace( /啊/g , '额');
console.log(str3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值