正则表达式

1.创建表达式

1.使用字面量创建正则表达式
var reg=/abcdefg/;//正则表达式里面不需要加引号,不管是数字型还是字符串型, 控制台输出的是字体颜色为红色
2.使用RegExp构造函数创建正则表达式
  • RegExp构造函数有两个参数:
    • 第一个参数为字符串型,生成正则表达式时会去除引号自动加上 / /
    • 第二个参数为修饰符,是一个可选项,一般为 g:全局匹配,i:不分大小写,传参时不分顺序,也可以同时传也可以单独传
var reg=new RegExp('^abcde$');
 console.log(reg2); //输出的是/^abcde$/ 且为字体颜色为红色
3.也可以省略new关键字来创建
var reg=RegExp('^abcde$');
 console.log(reg2); //输出的是/^abcde$/ 且为字体颜色为红色

2.正则标识符

  • i:表示忽略大小写

    • i写在正则的最后面
    • /1$/i
    • 就是在匹配的时候部分大小写
  • g:表示全局匹配

    • g写在正则的最后面
    • /\w/g
    • 就是全局匹配字母数字下划线

3.正则表达式字符

1.元字符:在正则表达式有特殊含义的字符
  • . : 匹配单个的任意字符

  • \w: 匹配单个的数字,字母,下划线

  • \W: 匹配单个非数字,字母,下划线

  • \d: 匹配单个数字

  • \D: 匹配单个非数字

  • \s: 匹配空白字符

  • \S: 匹配非空白字符

2.限定符:一般限定符配合元字符使用
  • *:表示前一个内容(任意的单个字符)重复至少 0 次,也就是可以出现 0 ~ 正无穷 次
  • +:前一个内容(任意的单个字符)重复至少 1 次,也就是可以出现 1 ~ 正无穷 次
  • ?: 前一个内容(任意的单个字符)重复 0 或者 1 次,也就是可以出现 0 ~ 1 次
  • {n} : 前一个内容(任意的单个字符)重复 n 次,也就是必须只能出现 n 次
  • {n,}: 前一个内容(任意的单个字符)至少出现 n 次,也就是出现 n ~ 正无穷 次
  • {n,m} :前一个内容(任意的单个字符)至少出现 n 次至多出现 m 次,也就是出现 n ~ m 次

注意:

**++:**单纯使用限定符配合元字符使用( /\d+/ )对于一些验证可能不太准确,可以使用类似(/1\d?1/)加以限定开始和结尾

例如:

var str = '11';
var str1 = '151';
var str2 = '1560051';
// 检测 ?
 console.log('-------???--------');
 var reg2 = /1\d?1/; //前一个内容重复 0 或者 1 次,也就是可以出现 0 ~ 1 次
 console.log(reg2.test(str)); //true 出现0次
 console.log(reg2.test(str1)); //true 出现1次
 console.log(reg2.test(str2)); //false 出现5次  

// 检测{n,m} 
    console.log('-----------{n,m} {n,m} {n,m} -----------');
    var reg5 = /1\d{2,4}1/;
    var nm = '1525561';
    var nm1 = '156541';
    var nm2 = '14861';
    var nm3 = '1481';
    var nm4 = '151';
    console.log(reg5.test(nm));//false 出现了5次
    console.log(reg5.test(nm1)); //true 出现了4次
    console.log(reg5.test(nm2));//true 出现了3次
    console.log(reg5.test(nm3)); //true 出现了2次
    console.log(reg5.test(nm4)); //false  出现了1次
3.边界符:主要有两个 ^,$
  • ^表示匹配行首的文本(以谁开始)

  • $表示匹配行首的文本(以谁结束)

  • 如果^和$一起,表示以同一个开始同一个结尾-------> 必须精确匹配

var reg1=/^abc/;
        // /^abc/ 以abc开头的返回true
        console.log(reg1.test('abc')); //true
        console.log(reg1.test('abcd')); //true
        console.log(reg1.test('aabcd')); //false
        console.log('======================');
        var reg2=/^abc$/; //精确匹配 要求必须是abc字符串才符合
        console.log(reg2.test('abc')); //true
        console.log(reg2.test('abcd')); //false
        console.log(reg2.test('aabcd')); //false
        console.log(reg2.test('abcabc')); //false
4.字符类

1.[]:匹配单个范围内的字符

2.[-]:方括号内部范围符

3.[^]:如果中括号里面有 ^ 表示取反的意思,千万和我们边界 ^ 别混淆

5.括号总结
  • [] :中括号 — 字符集合,匹配括号中任意的字符

  • {}:大括号 —量词符,里面表示重复的次数

  • ():小括号—表示优先级

    //小括号 表示优先级
            var reg2=/^(abc){3}$/; //它只是表示让abc重复三遍
            console.log(reg2.test('abccc')); //false
            console.log(reg2.test('abcabcabc')); //true
    

4.正则表达式方法

1.正则表达式对象只有两个方法
1.test()
  • 格式:正则.test(字符串)

  • 功能:在字符串中匹配这个正则是否存在

  • 返回值:如果匹配成功返回true,匹配失败则返回false

2.exec()
  • 格式:正则.exec(字符串)

  • 功能:在字符串中匹配这个正则是否存在

  • 返回值: 匹配成功,返回一个装有字符串的数组,匹配失败返回null

2.字符串方法里的正则表达式(属于字符串方法)
1.match()
  • 格式:字符串.match(正则)

  • 功能:在字符串匹配是否符合正则表达式,

  • 返回值:匹配成功,返回装有匹配的字符串的数组 匹配失败,返回null

2.replace()
  • 格式:字符串.replace(oldStr/正则,newStr);

  • 功能:用newStr将oldStr替换

  • 返回值:替换成功的新字符串

3.split()
  • 格式:字符串.split(分割符/正则);

  • 功能:用分割符将原字符串进行分割

  • 返回值:分割剩下的字符串数组

4.search()
  • 格式:字符串.search(字符串/正则)

  • 语法: 找到符号条件的字符串第一次出现的位置

  • 返回值:有的话返回索引,没有返回-1,全局匹配标识符(g)此处没有作用


  1. a-z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值