• JavaScript正则表达式


    JavaScript正则表达式

    正则表达式经常被简称为模式,正则表达式是由正则表达式语言创建的,正则表达式语言并不是一种完备的程序设计语言。更准确的说,正则表达式语言是内置于其他语言或软件产品的“迷你”语言。

    定义正则表达式

    js中的正则表达式用RegExp对象表示,有两种方式创建RegExp对象。
    一种是通过一种特殊的直接量语法创建
       var pattern = /s$/
    另一种是使用RegExp()构造函数
        var pattern = new RegExp('s$')
    如果需要修饰符
        var pattern = /s$/i
        var pattern = new RegExp('s$','i')

    js中正则表达式语法

    js中正则表达式还是比较弱的,比如不支持后行断言,不支持嵌入条件。

    基础字符

    ^ $ . * + ? = ! : | / ( ) [ ] { }
    字符 匹配
    做转义,即通常“”后面的字符不按原来的意义解释,如/b/匹配字符‘b’,而//转义为匹配一个字符的边界。

    对正则表达式功能字符的还原,如“*”表示匹配它前面元字符0次或n次,而加“”后,/a*/匹配“a*”
    ^ 匹配一个输入或一行的开头,/^a/匹配以a开头的输入
    $ 和^相反, 匹配一个输入或一行的结尾
    () 标记一个子表达式的开始和结束位置。
    [ 标记一个钟括号表达式的开始。
       
       
       
       
     
     
     
     
     
     
     
    直接量字符
    直接量字符包括字面含义的字母和数字、非字母的字符、和一些具有特殊含义的字符,后面两种需要转义。
    字符 匹配
    字母和数字 自身
    NUL字符(u0000)
    制表符(u0009)
    换行符(u000A)
    v 垂直制表符(u000B)
    f 换页符(u000C)
    回车符(u000D)
    xnn 由十六进制数nn指定的拉丁字符,例如,x0A等价于
    uxxxx 由十六进制数xxxx指定的Unicode字符,例如u0009等价于
    cX 控制字符^X,例如,cJ等价于换行符
     
     
     
     
     
     
     
     
     
     
     
     
    Windows使用 表示文本行结束,Unix、Linux只使用 表示文本结束。
     
    字符类
    将直接量字符单独放进方括号内就组成了字符类,一个字符类可以匹配它所包含的任意字符。由于某些字符类非常常用,因而在js的正则表达式语法中,使用了特定字符的转义字符来表示它们。
    字符 匹配
    [...] 方括号内的任意字符,如[xyz] 匹配这个集合中的任意一个字符
    [...] 不在方括号内的任意字符
    . 除换行符和其他Unicode行终止符之外的任意字符
    w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
    W 任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]
    s 任何Unicode空白符
    S 任何非Unicode空白符
    d 任何ASCII数字,等价于[0-9]
    D 任何非ASCII数字,等价于[^0-9]
    [] 退格直接量(特例)  匹配一个退格符
     
     
     
     
     
     
     
    重复字符
    字符 匹配
    {n,m} 匹配前一项n-m次
    {n,} 匹配前一项n次以上
    {n} 精确匹配前一项n次
    ? 匹配前面元字符0次或1次,如/ba*/ 等价于b,ba
    + 匹配前面元字符1次或n次,如/ba*/ 等价于ba,baa,baaa,……
    等价于?和+的并集,匹配前面元字符0次或n次,如/ba*/ 等价于b,ba,baa,……
     
     
     
     
     
    选择
    字符 匹配
    | 匹配的是该字符左边的子表达式或右边的子表达式
     
     
    运算符优先级
    正则表达式从左到右进行计算,并遵循优先级顺序,与算术表达式非常类似。
    运算符 描述                             
    转移符
    (),(?:),(?=),[] 圆括号和方括号
    *,+,?,{n},{n,},{n,m} 限定符
    ^,$,任何元字符、任何字符 定位点和序列(即;位置和顺序)
    | 替换,“或”操作
    字符具有高于替换运算符的优先级,使得“m|food”匹配“m”或“food”。
     
     
     
     
    常用正则表达式组合
    验证邮箱   /^([a-zA-Z0-9]+[_|\_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/
        也可以写成 /^(w+[_|.])*w+@(w+[_|.])*w+.[a-zA-Z]{2,3}$/
    等等。。
    正则表达式的使用
    使用正则表达式的方法match,exec,test
    test (regexp.test(str))
        返回值boolean类型,制作单纯的判断
    exec(regexp.exec(str))
        返回匹配到的字符串,如果没有匹配的则返回null
    match (str.match(regexp))
        和exec一样,但参数是正则表达式
    lift is made up of small pleasures. 生活是由各种微小的幸福构成。 日积月累,就会产生意想不到的Miracles。 每一天的坚持,每一天的收获,我与你同在!!
  • 相关阅读:
    .Net魔法堂:史上最全的ActiveX开发教程——发布篇
    .Net魔法堂:史上最全的ActiveX开发教程——开发篇
    JS魔法堂:浏览器模式和文档模式怎么玩?
    JS魔法堂:精确判断IE的文档模式by特征嗅探
    JS魔法堂:追忆那些原始的选择器
    意译:自调用函数表达式
    一起Polyfill系列:让Date识别ISO 8601日期时间格式
    一起Polyfill系列:Function.prototype.bind的四个阶段
    poco 线程库
    CDN理解<转>
  • 原文地址:https://www.cnblogs.com/drubber/p/6049809.html
Copyright © 2020-2023  润新知