zoukankan      html  css  js  c++  java
  • 正则

    正则表达式

    一、什么是正则表达式

    正则表达式是被用来匹配字符串中的字符组合的模式在javascript中,

    正则表达式也是对象被用于RegExp的exec()和test(),string的match(),replace(),search(),split();

    二、如何创建

      1.字面量
      var re=/abc/
      2.调用RegExp对象的构造函数
      var re=newe RegExp('abc');

    三、 用法

    复制代码
       1.切割字符串(分割字符串变成数组) split
       var str="ddfadfdafdfjagfg".split(/a/);
       console.log(str);//["ddf", "dfd", "fdfj", "gfg"]
       2.寻找匹配的字符串、返回索引值 search
       var str="sfsdfea".search(/d/);
       console.log(str);//3 如果找不到返回-1;
       3.寻找匹配字符串返回一个数组 match
       var str='abbcccbbbbbddbbbdabbb'.match(/b+/g)//b+,b出现1次或更多次, b*出现0次或更多次
        console.log(str);
       4.替换匹配到的字符串 replace
       var str="www.sina.com".replace(/sina/,"baidu");
       console.log(str);
       5. exec在字符串中寻找匹配字符串,该方法比其他正则方法或字符串方法支持的更复杂
       var str= /abc/.exec('aaaabccccbacabc')
       console.log(str);
       console.log(str.index);//3
       6.检测字符串是否匹配正则表达式 test()
       var str= /abc/.test('aaddccddabcddeeddfff')
       console.log(str);//true 返回的是布尔值
    复制代码

    四、正则表达式中特殊字符

    正则表达式:由一些普通字符和一些特殊字符(又叫元字符)组成

    普通字符:大小写字母和数字等
    特殊字符则具有特殊含义(js中常用的特殊字符有(){ }[] $ | ? * + .)若想匹配这类字符必须转义

    预定义特殊字符:

    + 	  /	/  制表符   eg: console.log(/	/.test(' ')) 
    + 
      /
     回车符   eg: console.log(/
    /.test(`aaa
    +   bbb`));
    + f  /f/  换页符   
    +   //  与回退字符

    五、正则表达式字符集

    1、正则内部类

    预定义类

    复制代码
    /./ 除了换行和回车其他任意字符都支持
    
    /d/ 匹配数字
    
    /D/ 匹配非数字
    
    /s/ 匹配空白
    
    /S/ 匹配非空白
    
    /w/ 匹配字母单词字符如:[a-zA-Z_0-9]
    
    /W/ 非单词字符
    复制代码

    简单类 // [ ]

    /string/.test("string") 必须匹配完整的字符 只多不能少/string/.test("stringfff")//true/string/.test("strin")//false;
    
    /[andy]/.test("and") 只要包含其中一个字符即为true/[andy]/.test("a")//true

    负向类(取相反) ^

     /[^abc]/.test("abc")//false (不够和正好,返回false,多了返回true)
      /[^abc]/.test("ab")//false
      /[^abc]/.test("a")//false
      /[^abc]/.test("abcd")//true

    范围类

    /[a-z]/.test("12")//false 表示a-z之间所有的小写字母
    
    /[0-9]/.test("12")//true 表示0-9之间所有的数字

    组合类

    /[a-zA-Z0-9]/.test("ff")//true 表示小写字母a-z之间大写字母A-Z之间,数字0-9之间

    2、正则边界

    ^ 匹配行或者字符串的起始位置 注意:^在[]中才表示非
    
    $ 会匹配行或字符串的结尾位置

    3、量词

    复制代码
    *(贪婪) 重复零次或更多(>=0)
    
    +(懒惰) 重复一次或更多次(>=1)
    
    ?(占有) 重复零次或一次 (0||1) 要么有,要么没有
    
    {} 重复多少次的意思
    
    {n}重复n次 如:你的密码只有6位 {6}
    
    {n,} 重复n次或更多(>=n)
    
    {n,m} 重复出现比n多比m少 (n<=x<m)
    
    *、{0,}
    
    +、{1,}
    
    ?、{0,1}
    复制代码

    4、修饰符

    g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。'12a34b56c78d90e'.match(/d+/) => ["12"]'12a34b56c78d90e'.match(/d+/g) => ["12", "34", "56", "78", "90"]
    
    i 修饰符用于执行对大小写不敏感的匹配。'aabAAcAa'.match(/aa/g) => ["aa"]'aabAAcAa'.match(/aa/gi) => ["aa", "AA", "Aa"]

    5、分组

    复制代码
    虽然量词的出现,能帮助我们处理一排密紧密相连的同类型字符。但这是不够的,我们用中括号表示范围内选择,大括号表示重复次数。如果想获取重复多个字符,我们就要用小括号进行分组了。
    
    /(bye){2}/.test('byebye')=> true
    
    /(bye){2}/.test('bye')=> false
    复制代码

    6、匹配中文

    匹配中文:[u4e00-u9fa5]
    
    /[u4e00-u9fa5]+/.test('爱创课堂')=> true
    
    /[u4e00-u9fa5]+/.test('aaa')=> false
  • 相关阅读:
    绘图类
    画笔类
    创建模态,非模态对话框
    菜单类
    [WPF]程序随系统自启动
    [WPF]xml序列化以及反序列化数据
    [WPF]项目整合Metro和MaterialDesignInXamlToolkit UI框架
    [WPF]鼠标移动到Button颜色改变效果设置
    [Leetcode] 寻找数组的中心索引
    [Leetcode]在排序数组中查找元素的第一个和最后一个位置
  • 原文地址:https://www.cnblogs.com/zhaosijia----1234/p/8976663.html
Copyright © 2011-2022 走看看