• js正则表达式


    1.字符类

    \w 匹配字母数字下划线,相当于[0-9A-Za-z_]

    \s 匹配单个空白字符,包括空格、制表符、回车符、换行符

    \b 匹配一个词的边界

    2.边界符

    如果不加任何边界符,则表示包含。以下只要包含即可

    1. // /123/ 匹配内容是否包含有123
    2. var rg = /123/
    3. console.log(rg.test('123'))
    4. console.log(rg.test('1234'))
    5. console.log(rg.test('41234'))

    3.字符集合[]

    字符集合表示有一系列字符可供选择,只要匹配其中一个就可以

    3.1 不带边界符:包含任意一个则返回true

    1. var rg = /[abc]/
    2. rg.test('a')
    3. rg.test('ab')
    4. rg.test('abc')
    5. rg.test('abcd')

    3.2 存在起止边界符

    加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false

    1. // 存在起止边界符:加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false
    2. var rg1 = /^[abc]$/
    3. rg1.test('a')
    4. rg1.test('ab')
    5. rg1.test('abc')
    6. rg1.test('abcd')

    3.3 [-]表示取某个范围值

    var rg2 = /[a-z]/ // -表示取某个范围值

    3.4 [^] 表示取反

    var rg3 = /[^a-z]/ // ^表示取反

    4.量词符

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

    |量词符   |说明  |

    • *   重复零次或更多次
    • +   重复一次或更多次
    • ?   重复零次或一次
    • {n} 重复n次
    • {n, m}重复n到m次
    1. var rg = /^[a-z]0*$/
    2. var rg1 = /^[a-z]0+$/
    3. var rg2 = /^[a-z]0?$/
    4. var rg3 = /^[a-z]0{2}$/
    5. var rg4 = /^[a-z]0{1,2}$/

    5.分组符号 ()

    对字符进行分组,小括号包裹的内容可以看作一个整体。$1表示第一个分组,$2表示第二个,以此类推

    1. var rg = /^abc{1,3}$/; //c匹配1次到3次
    2. var rg1 = /^(abc){1,3}$/; //abc匹配1次到3次

    6.正则表达式的参数

    思考一个问题:我们需要匹配到某个字符串中所有满足条件的字符,应该如何匹配?可以组合使用,如/a/ig

    • g   全局搜索
    • i   不区分大小写搜索
    • m   多行搜索
    • s   允许.匹配换行符
    • u   使用unicode码的模式进行匹配
    • y   执行“粘性(sticky)”搜索,匹配从目标字符串的当前位置开始

    match()匹配到返回的数组:

    1. var rg = /ab/g
    2. 'ababab'.match(rg)

    7.正则表达式常见的用法

    7.1 replace替换

    str.replace(regexp|substr, newSubStr|function)

    第一个参数可以是正则或者字符串

    第二个参数为需要替换的字符串或者一个函数

    要求1:将手机号的中间四位替换成*,例如13877283312变成138****3312

    分组和replace实现:

    1. var str = '13877283312'
    2. console.log(str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'))

    要求2:单词首字母转为大写(/\b(\w)/g),例如my name is allen, i like code.

    通过/\b(\w)/g匹配首字母

    1. var str = 'my name is allen, i like code'
    2. console.log( str.replace(/\b(\w)/g, function (m) {
    3. console.log(m)
    4. return m.toUpperCase()
    5. }))

    要求3:大于0并且不超过两位小数

    首先实现两位小数,那从两个方面来考虑。第一个是0到1之间即大于0小于1的,第二个是大于1的。从这两个角度来看,比如说0.00啊,0.00应该是不通过的,它是等于零的,然后0.0。像这一些应该给他排除。/^([1-9](\d+)?(\.\d{1,2})?)|(\d\.\d{1,2})$/或者/^([1-9]\d*(\.\d{1,2})?|([0](\.([0][1-9]|[1-9]\d{0,1}))))$/

    1. // 大于0并且不超过两位小数
    2. // 大于0并且不超过两位小数
    3. let str = 0.445;
    4. let str1 = 0;
    5. let str2 = 1;
    6. let str3 = 1.3;
    7. let str4 = 0.;
    8. let str5 = 0.00;
    9. let str6 = 0.0;
    10. let str7 = 811.0;
    11. let reg = /^([1-9](\d+)?(\.\d{1,2})?)|(\d\.\d{1,2})$/;
    12. // let reg = /^([1-9]\d*(\.\d{1,2})?|([0](\.([0][1-9]|[1-9]\d{0,1}))))$/;
    13. console.log(reg.test(str));
    14. console.log(reg.test(str1));
    15. console.log(reg.test(str2));
    16. console.log(reg.test(str3));
    17. console.log(reg.test(str4));
    18. console.log(reg.test(str5));
    19. console.log(reg.test(str6));
    20. console.log(reg.test(str7));

  • 相关阅读:
    13009.pycharm搭建python开发环境
    idea创建springboot项目
    打开时空隧道,重演云栖72小时云世界
    Vue-CLI项目搭建
    会员营销管理系统
    【云计算知识库】什么是云?什么是云计算?计算的是什么?openstack是什么?nova计算组件?【持续更新中】
    浅谈Vue中render函数
    MVC、MVVM、MVP的区别
    使用IDEA创建SpringCloud项目
    Gin 笔记(01)— 安装、运行、框架、Context 和 Engine
  • 原文地址:https://blog.csdn.net/qq_34569497/article/details/133863895