正则表达式

150 阅读2分钟

1 正则校验的两个方法

exec() 符合返回的是数组 不符合返回null

    var reg = /^[a-z]+$/g
    console.log(reg.exec('abc'));

使用test()

这个方法用来检查一个字符串是否符合正则表达式的规则,如果符合返回true 则返回false

       var reg = new RegExp(/[a-z]/,'g');
         console.log(reg.test('aaaa')); */
       字面量的表达方式
       var reg = /[a-z]/i; 

2: 修饰符

i 忽略大小写 g全局 把符合的字符串全部提取,返回数组呈现 修饰符一起写不区分顺序

    var str = 'abvabbbb';
    console.log(str.match(/a/g)); 
    

3:表达式:

[a-z]查找任何从小写a到z的字符; [A-Z]查找任何从小写A到Z的字符; [a-zA-Z]表示大小写的26个英文字母,都能匹配; [0-9] 查找任何从0到9的数字; [0-9a-zA-Z]表示大小写的26个英文字母和数字都匹配 []只要有一个符合就返回true

           var reg = /[0-9]/  
   console.log(reg.test('abc123')); */

[abc]表示查找花括号里面任意字符一个 ^除了意思 或是取反 [^abc]取反或是除了abc之外的字符 写在[]里面的^是除了意思 ^[]表示以什么开头 []$表示以什么结尾

   var reg = /[^abc]/
   console.log(reg.test('df')); 
  • 匹配前面的字符1次或是多次、

    表示可以匹配纯26个小写英文字母
    var reg = /^[a-z]+$/
     console.log(reg.test('abc')); 
     
    

    // 匹配一串字符,可以包括多个英文字母包括大小写和数字

       var reg = /^[a-zA-Z0-9]+$/
       console.log(reg.test('11Ab'));
      /* 必须加入限定符号^$ */
    

^[a-zA-Z0-9] 以任意一个大小写字母或是数字开头 ^[a-zA-Z0-9]$ 以任意一个大小写字母或是数字结尾 {n,}至少匹配n次 加限定符 {n} 确定匹配n次 加限定符 {n,m}最少匹配n次,最多匹配m次 加限定符

 用户名 不能数字 长度不能小于6位 不能大于10var reg = /^[a-zA-Z0-9]{6,10}$/
console.log(reg.test('aaaaaa'));
  • 匹配前面的子表达式0次或是多次 加限定符

     var reg = /^[a-zA-Z0-9]*$/
     console.log(reg.test('aaaaaa'));
    

?匹配前面的子表达式出现0次或1次 加限定符

      var reg = /^[a-zA-Z0-9]?$/

4:元字符

元字符区分大小写 \w 匹配数字,字母,下划线

    var reg = /^\w+$/
    console.log(reg.test('_abc'));

\W 匹配非数字,字母,下划线

    var reg = /^\W+$/
    console.log(reg.test("#$"))

\d匹配数字

    var reg = /^\d+$/
    console.log(reg.test("123"))

\D匹配非数字

    var reg = /^\D+$/
    console.log(reg.test("acx"))

\s匹配空白字符(空字符串不可以) 空格 换行\n 回车\r

     var reg = /^\s+$/
    console.log(reg.test("\r"))

\S匹配非空白字符 除了空的字符串 空格 换行\n 回车\r 其他都返回true

   var reg = /^\S+$/
    console.log(reg.test("aa"))
    

\n 换行符 只匹配换行符 var reg = /^\n+$/ console.log(reg.test("\n\n\n"))

5:字符串支持正则的方法

search 返回匹配到的第一个字符串的下标,否则返回-1

   var str = '223abc'
    console.log(str.search(/[a-z]/));

match 没有匹配到的字符串返回null 符合的返回数组 不能使用限定符

    var str = '223abcabc'
    console.log(str.match(/[0-9]/));
    // 返回2 的数组
    console.log(str.match(/[0-9]/g));
    // 返回一个数组  将所有的数字全部匹配到

replace 返回一个新的字符串

    var str = 'abca122bc'
     console.log(str.replace('bc','o')); 
    let newStr = str.replace(/[0-9]/g, 'oo')
   let newStr=str.replace(/[0-9]/,'oo')
    console.log(newStr)
    

split 字符串转换成数组 匹配不到 将整个字符串当成数组返回

     split的第二个参数是分割成几个数组
    var str1 = 'a1b2c3d'
    console.log(str1.split('-')); */
       把字符串的数字当做分隔符分隔成数组
   console.log(str1.split(/[0-9]/)) */
    console.log(str1.split(/[0-9]/,3))
    // 后面的3是代表分隔成3个数组['a', 'b', 'c']