Skip to content

Latest commit

 

History

History
178 lines (150 loc) · 4.37 KB

RegExp.md

File metadata and controls

178 lines (150 loc) · 4.37 KB

RegExp

字符

字符 描述
\d 匹配一个数字
\D 匹配任何一个非数字
\w 匹配一个数字/字母
\W 匹配任何一个非数字/字母
\s 匹配任何一个空白字符,包括空格、制表符、换页符等等
\S 匹配任何一个非空白字符
\n 匹配一个换行符
\r 匹配一个回车符
\f 匹配一个换页符
· 任意匹配字符
* 表示0-n个字符
+ 至少一个字符(1-n)
表示0或1个字符
{n} 表示n个字符
{n,} 至少n个字符
{n,m} 表示n-m个字符
A|B 匹配A或B
^ 表示行的开头
$ 表示行的结束
[abc] a或b或c

用法

  • Js两种方法创建正则表达式:

    1.var re1=/ABC-001/; //ABC/-001

    2.var re2=new RegExp("ABC\-001"); //ABC/-001

  • RegExp对象的test()方法用于测试给定的字符串是否符合条件

用途

  • 切分字符串

    str.split(/[\s]+/);
    
  • 分组

    例:

        var re=/^(\d{3})-(\d{3,8})$/;     //分别定义了两个组
        re.exec('010-12345');             //["010-123456","010","12345"]
    

    exec()方法匹配后,会返回一个Array,第一个元素是匹配成功的整个字符串,后面是匹配成功的子串,匹配失败会返回null。

  • 全局搜索

       var re1=/RegExp/g;
       var re2=new RegExp("RegExp","g");
    
    • 指定g后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引。

    • 全局匹配不可使用/^...$/,那样只会最多匹配一次。

    • 正则表达式还可以用i标志表示忽略大小写,m标志表示执行多行匹配。

常用表达式收集

  1. 匹配任意字符     正则: /[^]/

  2. 匹配ASCII码范围     规则:\x00表示十进制0 ,\xff表示十进制255,0-255正好是ASCII码表可表示的范围。     正则: /[\x00-\xff]/g     说明:同理, /[^\x00-\xff]/g 则表示匹配汉字或者是全角字符。

  3. 匹配汉字     规则:\u4e00 : 在Unicode码中汉字的开始编码,\u9fa5 : 在Unicode码中汉字的结束编码。     正则: /^[\u4e00-\u9fa5]+$/

  4. 手机号码检测     规则:[3|4|5|7|8] : 手机号11位,但是第二位数字只有这几种固定的网段。     正则: /^1[3|4|5|7|8]\d{9}$/

  5. 邮政编码     规则:邮政编码必须为数字,长度为6位且第一位不能为0,示例:224000     正则: /[1-9]\d{5}/

  6. 电子邮件     规则:以@为上下文表示,左侧只能是数字,字母及下划线组成。        而右侧又以.符号为上下文,左侧与上述一样,而右侧只能为字母结尾。     正则: /^([\w-.]+)@([\w-]+).([a-zA-Z]{2,4})$/

  7. 匹配前后空格     正则: /^\s+|\s+$/g

  8. QQ号匹配     规则:首位不能为0,位数5-12位。     正则: /^[1-9]\d{4,11}$/;

  9. 匹配网址url的正则表达式     正则: [a-zA-z]+://[^\s]*

  10. 匹配国内电话号码     正则: \d{3}-\d{8}|\d{4}-\d{7}

  11. 匹配国内身份证号码     规则:简单的身份证匹配,根据位数以及结尾是否有字母。     正则: /^\d{15}(\d{2}[A-Za-z0-9])?$/

  12. 匹配IP地址     正则: /^(\d+).(\d+).(\d+).(\d+)$/g

  13. 验证是否含有^%&',;=?$"等字符     正则: /[^%&',;=?$\x22]+/

  14. 匹配空行的正则表达式     正则: \n[\s| ]*\r

  15. 数学正则     整数 : /^[-+]?\d+$/     浮点数 : /^[-+]?\d+(.\d+)?$/     Chinese : /^[\u0391-\uFFE5]+$/     实数: ^[-+]?\d+(.\d+)?$