• 正则表达式


    什么是正则表达式

    正则表达式,是用于匹配字符串中字符组合的模式。在javaScript中,正则表达式也是对象。

    正则表通常被用来检索、替换那些符合某个模式(规则)的文本。例如验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等。

     1 <script>
     2   // 1.利用RegExp对象来创建 正则表达式
     3   var regexp = new RegExp(/123/);
     4   console.log(regexp);  // /123/
     5 
     6   // 2.利用字面量创建 正则表达式
     7   var rg = /123/;
     8   // 3.test 方法用来检测字符串是否符合正则表达式要求的规范
     9   console.log(rg.test(123));   // true
    10 </script>

    边界符

    正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。

    边界符 说明
    ^ 说明匹配行首的文本(以谁开始)
    $ 说明匹配行尾的文本(以谁结束)

    如果^和$在一起,表示必须是精确匹配。

    1   // 3.test 方法用来检测字符串是否符合正则表达式要求的规范
    2   console.log(rg.test('abc'));   // true
    3   console.log(rg.test('abcd')); // true
    4   console.log(rg.test('aabcd')); // true
    5 
    6   var reg = /^abc/;
    7   console.log(reg.test('abc')); // true
    8   console.log(reg.test('abcd')); // true
    9   console.log(reg.test('aabcd')); // false

    字符类

    字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内

    [^]方括号内部,取反符^

    /^[^abc]$/.test('a');     // false
     1 <script>
     2   // 字符类: []表示有一系列字符可供选择,只要匹配其中一个就可以了
     3   var rg = /[abc]/;  // 只要包含有a或者b或者c,都返回true
     4   console.log(rg.test('andy'));  // true
     5   console.log(rg.test('baby'));  // true
     6   console.log(rg.test('color')); // true
     7   console.log(rg.test('red'));   // false
     8 
     9   var rg1 = /^[abc]$/;  // 三选一,只有是a或者b或者c,这三个字母才返回true
    10   console.log(rg1.test('aa'));  // false
    11   console.log(rg1.test('a'));  // true
    12   console.log(rg1.test('b'));  // true
    13   console.log(rg1.test('c'));  // true
    14 
    15   var rg2 = /^[a-z]$/;  // 26个英文字母任何一个字母返回true
    16   console.log(rg2.test('a')); // true
    17   console.log(rg2.test('z')); // true
    18   console.log(rg2.test('A'));  // false
    19 </script>

    量词符

    量词符用来设定某个模式出现的次数

    量词 说明
    * 重复零次或更多次
    + 重复一次或更多次
    重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n, m} 重复n到m次
     1  // 量词符:用来设定某个模式出现的次数
     2   // 简单理解: 就是让下面的a这个字符重复多少次
     3   // var reg = /^a$/;
     4   // * 相当于 >= 0, 可以出现0次或者很多次
     5   // var reg = /^a*$/;
     6   // console.log(reg.test(''));  // true
     7   // console.log(reg.test('a')); // true
     8   // console.log(reg.test('aaa')); // true
     9 
    10   // + 相当于 >= 1, 可以出现1次或者很多次
    11   // var reg = /^a+$/;
    12   // console.log(reg.test(''));  // false
    13   // console.log(reg.test('a'));  // true
    14   // console.log(reg.test('aaa'));  // true
    15 
    16   // ?相当于 1 || 0
    17   // var reg = /^a?$/;
    18   // console.log(reg.test(''));  // true
    19   // console.log(reg.test('a'));  // true
    20   // console.log(reg.test('aaa')); // false
    21 
    22   // {3} 就是重复3次
    23   // var reg = /^a{3}$/;
    24   // console.log(reg.test('')); // false
    25   // console.log(reg.test('a')); // false
    26   // console.log(reg.test('aaa')); // true
    27 
    28   // {3,} 大于等于3
    29   // var reg = /^a{3,}$/;
    30   // console.log(reg.test('')); // false
    31   // console.log(reg.test('a')); // false
    32   // console.log(reg.test('aaaa')); // true
    33   // console.log(reg.test('aaa')); // true
    34 
    35   // {3, 16} 大于等于3,并且小于等于16
    36   var reg = /^a{3,6}$/;
    37   console.log(reg.test('')); // false
    38   console.log(reg.test('aaaa')); // true
    39   console.log(reg.test('aaaa')); // true
    40   console.log(reg.test('aaaaaaaa')); // false

    预定义类

    预定义类指的是某种常见模式的简写方式。

    预定类 说明
    d 匹配0-9之间的任一数字,相当于【0-9】
    D 匹配所有0-9以外的字符,相当于[^0-9]
    w 匹配任意的字母、数字和下划线,相当于【A-Za-z0-9】
    W 除所有字母、数字和下划线以外的字符,相当于【^A-Za-z0-9】
    s 匹配空格(包含换行符、制表符、空格符等),相当于【 vf】
    S 匹配非空格的字符,相当于【^ vf】

    案例:验证座机号码

    var reg = /^d{3}-d{8}|d{4}-d{7}$/;

    replace替换

    replace( )方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式。

    • g : 全局匹配
    • i  :忽略大小写
    • gi:全局匹配 + 忽略大小写
    var str = 'andy和red';
    var newStr = str.replace('andy', 'baby');
    console.log(newStr)//baby和red
    
    //等同于 此处的andy可以写在正则表达式内
    var newStr2 = str.replace(/andy/, 'baby');
    console.log(newStr2)//baby和red
    
    //全部替换
    var str = 'abcabc'
    var nStr = str.replace(/a/,'哈哈')
    console.log(nStr) //哈哈bcabc
    
    //忽略大小写i
    var str = 'aAbcAba';
    var newStr = str.replace(/a/gi,'哈哈')//"哈哈哈哈bc哈哈b哈哈"

    在线测试工具:https://tool.oschina.net/regex#

    https://c.runoob.com/front-end/854

  • 相关阅读:
    学Maven,这篇万余字的教程,真的够用了!
    15 个优秀开源的 Spring Boot 学习项目,一网打尽!
    Spring Boot2 系列教程(三十)Spring Boot 整合 Ehcache
    800java面试题
    Nginx开发从入门到精通
    曹工说mini-dubbo(1)--为了实践动态代理,我写了个简单的rpc框架
    redis好书推荐
    一步一步学solr--windows下solr5.4.0环境搭建
    Redis
    8 个最好的 jQuery 树形 Tree 插件
  • 原文地址:https://www.cnblogs.com/guwufeiyang/p/13184934.html
Copyright © 2020-2023  润新知