• 【原创】正则表达式(知识点总结)


    一、两种创建方式:
    ①、RegExp
    var game=new RegExp("game")
    var game=new RegExp("game","igm") //第二个参数可接受i(忽略大小写)、g(全局匹配)、m(多行匹配)三个参数,
    ②、 / /
    var game=/game/
    var game=/game/ig
    二、正则测试方法 RegExp对象有两个测试方法:test() 和exec();用于字符串测试 ①、test() 接收参数为字符串,返回boolean值。参数为字符串
    var pattern=/box/i; var str="this is a box" console.log(pattern.test(str)); //true 合成一条,表示为: console.log(/box/i.test("this is a Box")); ②、exec() 匹配了则返回数组,否则返回null;参数为字符串 >console.log(/box/i.exec("this is a Box")); ["Box", index: 10, input: "this is a Box"] console.log(/box/i.exec("this is a Box")=="Box"); true var arr=/box/i.exec("this is a Box");arr; ["Box"] //匹配上了返回数组 三、正则使用方法 在正则应用中,除了test()和exec()两个测试方法,还有如下使用方法:(参数都为正则) ①、match(pattern) ②、replace(pattern,replacement) ③、search(pattern) ④、split(pattern) ①、match(pattern) 匹配得到数组 var str="this is a game,Do you want to Play the Game?";console.log(str.match(/game/ig)); ["game", "Game"] var str="this is a game,Do you want to Play the Game?";console.log(str.match(/game/ig).length); 2 ②、replace(pattern,replacement) 用第二个参数替换第一个参数(第一个参数为匹配到的值) var str="this is a game,Do you want to Play the Game?";console.log(str.replace((/game/ig),"text")); this is a text,Do you want to Play the text? ③、search(pattern)查找匹配位置,返回位置,否则返回-1 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/game/igm)); 10 //匹配到game,返回第一个Game的索引 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/Game/)); 39 //匹配到Game,返回第一个Game的索引 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/Tame/)); -1 //匹配不到,返回-1 ④、split(pattern) 已匹配到的字符为分割点,分割成数组 var arr="this is a box,it is sigh BOX!".split(/ /ig);console.log(arr); ["this", "is", "a", "box,it", "is", "sigh", "BOX!"] var arr="this is a box,it is sigh BOX!".split(/b/ig);console.log(arr); ["this is a ", "ox,it is sigh ", "OX!"]

    四、正则-元字符

    字符 匹配情况
    . 点字符,匹配除换行字符 外的任意字符
    [a-z0-9] 匹配括号内的字符集中的任意字符,即0-9或者a-z
    [^a-z0-9] 匹配任意不在字符集内的任意字符
    d       匹配数字0-9
    D           匹配非数字,同[^0-9]
    w   匹配字母,数字或者下划线
    W   匹配除字母、数字和下划线之外的字符
    匹配null字符
    匹配换行符  
    匹配制表符
     匹配纯空格字符
    f   匹配进纸字符
    匹配回车字符
    s 匹配空白符、空格字符、制表符和换行符(有疑问)
    匹配非空白字符
    ^ 从行首开始匹配
    $ 从行末尾开始匹配
     x?  匹配0个或者1个
     x+    匹配1个或者大于1个
     x*  匹配0个或者大于0个
     (xyz)+  匹配至少一个(xyz)
     x{m,n}  匹配最少m个,最多n个
     ab|cd|ef  匹配ab或者cd或者ef中任意一个
     1或者$1  匹配第一个分组中的内容
     2或者$2  匹配第二个分组中的内容
     3或者$3  匹配第三个分组中的内容
     (string)  用于反向引用的分组
     z  只匹配字符串结束处
       匹配字符串结尾处或行尾
     G  匹配当前搜素的开始位置
     A  只匹配字符串开始处

    五、正则匹配-贪婪&&懒惰

    匹配方式有贪婪(默认)和懒惰两种方式

    贪婪  懒惰
    + +?
    ? ??
    * *?
    {n} {n}?
    {m,n} {m,n}?
    {n,} {n,}?

     

     

     

     

     

     

     

     

    六、常用的正则表达式收集

     

    1.检查邮政编码
    var pattern = /[1-9][0-9]{5}/; //共6 位数字,第一位不能为0
    var str = '224000';
    alert(pattern.test(str));
    
    2.检查文件压缩包
    var pattern = /[w]+.zip|rar|gz/; //w 表示所有数字和字母加下划线
    var str = '123.zip'; //.表示匹配.,后面是一个选择
    alert(pattern.test(str));   //true
    
    3.删除多余空格
    var pattern = /s/g; //g 必须全局,才能全部匹配
    var str = '111 222 333';
    var result = str.replace(pattern,''); //把空格匹配成无空格
    alert(result); 、//返回 result=111222333,不改变str的值
    
    4.删除首尾空格
    var pattern = /^s+/; //强制首
    var str = ' goo gle ';
    var result = str.replace(pattern, '');
    pattern = /s+$/; //强制尾
    result = result.replace(pattern, '');
    alert('|' + result + '|');
    或者如下:
    var pattern = /^s*(.+?)s*$/; //使用了非贪婪捕获 var str = ' google '; alert('|' + pattern.exec(str)[1] + '|');
    或者如下:
    var pattern = /^s*(.+?)s*$/; var str = ' google '; alert('|' + str.replace(pattern, '$1') + '|'); //使用了分组获取 5.简单的电子邮件验证 var pattern = /^([a-zA-Z0-9_.-]+)@([a-zA-Z0-9_.-]+).([a-zA-Z]{2,4})$/; var str = 'yc60.com@gmail.com'; alert(pattern.test(str));
    var pattern = /^([w.-]+)@([w.-]+).([w]{2,4})$/; var str = 'yc60.com@gmail.com'; alert(pattern.test(str));

     转载请注明链接:http://www.cnblogs.com/pm-dongjian/p/5020392.html

  • 相关阅读:
    让一个不固定高度的div,保持垂直水平居中的方法
    Set、Map、WeakSet 和 WeakMap
    JS 中常用的 Math 方法
    不使用 new,创建一个实例对象
    做一个弹窗
    变量提升
    事件委托实践
    vue组件通信
    新版vue脚手架关闭eslint
    图片懒加载原生js实现
  • 原文地址:https://www.cnblogs.com/pm-dongjian/p/5020392.html
Copyright © 2020-2023  润新知