美文网首页
[JavaScript]正则表达式

[JavaScript]正则表达式

作者: 泉落云生 | 来源:发表于2018-04-10 18:53 被阅读9次

    常用正则验证

    //Email地址
    /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g
    
    //手机号码
    /^1[3-9]\d{9}$/g
    
    //固定电话
    ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
    
    //国内固话
    \d{3}-\d{8}|\d{4}-\d{7}
    
    //身份证号码(15位、18位数字)
    ^\d{15}|\d{18}$
    
    //中国邮政编码(中国邮政编码为6位数字)
    [1-9]\d{5}(?!\d) 
     
    //IP地址
    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) 
    
    //URL
    ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    
    //匹配HTML标签
    /<(?:(?:\/?[A-Za-z]\w*\b(?:[=\s](['"]?)[\s\S]*?\1)*)|(?:!--[\s\S]*?--))\/?>/g
    
    //img src
    /<img [^>]*src=['"]([^'"]+)[^>]*>/
    
    //抽取注释
    <!--(.*?)-->
    
    //判断IE的版本
    ^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$
    
    //金额校验,精确到2位小数
    ^[0-9]+(.[0-9]{2})?$
    
    //输入数字或者小数
    /^\d*\.?\d*$/g
    
    //1000->1,000
    str.replace(/\B(?=(\d{3})+(?!\d))/g,',')
    
    //取闭合标签
    str.match(/(<span class="blue">)([\S\s]*?)(\<\/span>)/g)
    

    案例:

    1. 为符合条件的日期替换成中文日期
      string.replace(/^(\d{4})[/-](\d{2})[/-](/d{2})/g,'1年2月3日')
      ()=>分组;$1反向引用

    正则分析

    正则表达工具

    正则分析01
    • ()代表group

    • @就是代表字符串'@'


    i:忽略字母大小写 g:全局 m:多行搜索(换行)

    字符类:

    • []:使用元字符来构建一个简单的类,所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符。
      例如:[abc]把字符a或b或c归为一类,表达式可以匹配这类字符。


      [abc]
    • 取反则只要添加[^abc]这样就行了。//none of a|b|c

    范围类:

    • [a-z]、[A-Z]、[0-9]等
    • 可以连写[a-zA-Z0-9-]意思是:a-z大小写和数字以及'-'

    预定义类:

    • \d==[0-9]
    • \D==[^0-9]
    • \s==空白符
    • \S==非空白符
    • \w==[a-zA-Z_0-9]
    • \W==[^a-zA-Z_0-9]
    • .==[^\r\n]除了回车换行的任意字符

    范围边界:

    • ^代表start,以...作为开始。后面定义
    • $代表end,以...作为结束。前面定义
    • \b 代表单词边界
    • \B 代表非单词边界

    量词:

    • ? == {0,1}
    • + == {1,n}
    • * == {0,n}
    • {n} 意味着出现n次
    • {n,m} 意味着出现n到m次
    • {n,}至少出现n次
    • {,n}最多出现n次

    特殊

    • \1 必须与小括号配合使用;所获取的第1个()匹配的引用。意思就是和第一个匹配的值相同。(\d)(a)\1 和(\d)值相同。
      Back reference (group = 1)
    • \2 必须与小括号配合使用;所获取的第2个()匹配的引用。意思就是和第二个匹配的值相同。(\d)(a)\2和(\a)值相同。
      Back reference (group = 2)

    贪婪模式

    正则表达式默认尽可能多的匹配。

    var str = "123456789"
    str.replace(/\d{3,6}/,'换成这个')
    // 替换成这个789
    

    非贪婪模式

    让正则表达式尽可能少的匹配,一旦成功就不再继续尝试。

    • {3,5}?量词后面加问号就行了
    var str = "123456789"
    str.replace(/\d{3,6}?/,'换成这个')
    // 替换成这个456789
    

    正则匹配标签

    生成正则

    相关文章

      网友评论

          本文标题:[JavaScript]正则表达式

          本文链接:https://www.haomeiwen.com/subject/vcdghftx.html