zoukankan      html  css  js  c++  java
  • JavaScript正则表达式基础知识汇总

    一、创建正则对象:

    1、构造函数RegExp创建正则对象

    var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串

    2、使用正则直接量

    var pattern = /s$/; //建议这样写

    二、正则表达式字符

    1、反斜线 在正则表达式中表示转义序列

    特殊符号:

    ^ $ . * + ? = ! : |  / ( ) [ ] { }

    如果想要在正则表达式中匹配它们,应该在他们前面加上反斜线,如:

    var pattern = /$/; //pattern匹配$符号

    2、直接量字符

    字符    匹配
    o     NUL字符(u0000)
         制表符(u0009)
         换行符(u000A)
    v     垂直制表符(u000B)
    f     换页符
         回车符
    xnn   由十六进制数nn指定的拉丁字符,例如:x0A等价于
    uxxxx 由十六进制数xxxx指定的Unicode字符,例如:u0009等价于
    cX    控制字符^X。例如:cJ等价于换行符

    3、字符类

    字符         匹配
    [...]       方括号内的任意字符
    [^...]      非方括号内的任意字符
    [0-9]       0-9之间的数字
    [a-z]       小写的拉丁字母
    [A-Z]       大写的拉丁字母
    [0-9a-zA-Z] 数字和大小写拉丁字母

    下面也属于字符类:

    .    除换行符和其他Unicode行终止符之外的任意字符
    s   任意Unicode空白符
    S   任意非Unicode空白符
    d   任意ASCII码数字,等同于[0-9]
    D   任意非ASCII码数字的字符,等同于[^0-9]
    w   任意ASCII码单词字符,等同于[a-zA-Z0-9_]
    W   任意非ASCII数字,等同于[^a-zA-Z0-9_]
    [] 在字符类中表示退格直接量

    4、重复字符类

    贪婪的重复字符

    字符      匹配
    {n,m}  前一项至少n次,但不能超过m次
    {n,}   前一项至少n次
    {n}    前一项恰好n次
    ?      前一项0次或1次,等价于{0,1}
    +      前一项至少一次,等价于{1,}
    *      前一项0次或多次,等价于{0,}

    非贪婪的重复匹配只需在贪婪的重复字符后面加上一个?(问号),且问号后没有其他表达式字符,否则非贪婪匹配忽略。例:

    var str = 'aaaaaa',
     str2 = 'aaaaaabc',
     pattern = /a+/,
     pattern2,
     pattern3;
        
     pattern.exec(str); //全部匹配
     
     pattern2 = /a+?/;
     pattern2.exec(str); //只匹配了字符串中str的第一个a
     
     pattern3 = /a+?bc/;
     pattern3.exec(str2); //全部匹配,匹配结果为aaaaaabc

    5、选择,分组,引用

    字符              含义 
    | 表示或,用于分隔选择
    () 子表达式(子模式),可以引用子模式匹配结果
    (
    ?:) 子表达式(子模式),可以引用子模式匹配结果,但是子模式匹配结果不出现在正则匹配结果集中
    (n为数字) 引用对应的子模式匹配结果
    6、位置字符
    字符 匹配
    ^ 字符串的开头
    $ 字符串的结尾
     位于w(单词字符)与W(非单词字符)的边界或位于一个ASCII单词字符与一个字符串的开头和结尾之间的边界
    B 非词语之间的位置
    (?=p) 正前向声明,要求接下来的字符与模式p匹配,但是不包括匹配中的那些字符
    (?!=p) 反前向声明,要求接下来的字符不与模式p匹配

    例:

    1 var url = 'vip.etao.com/youhui.htm?drawCredits',
     2 pattern = /youhui/,
    3 pattern2 = /^vip.etao.com/.+drawcredits$/i;
    4
    5 pattern.exec(url); //匹配youhui子串
    6 pattern2.exec(url); //全部匹配url变量值 

     

    三、正则对象标准,属性,及方法

    1、标志

    标志  含义 
    g 全局匹配
    i 不区分大小写
    m 多行匹配

    2、方法

    exec     接受一个字符串参数,返回由完全匹配和子表达式匹配结果组成的数组 
    test 接受一个字符串参数,返回boolean值
    compile 编译正则表达式

    3、属性

    source     正则表达式的文本 
    global 是否拥有全局搜索标志g
    ignoreCase 是否拥有标志i
    multiline 是否拥有标志m
    lastIndex 搜索匹配的开始位置(可读写)
    
    
  • 相关阅读:
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
    java io系列20之 PipedReader和PipedWriter
    java io系列19之 CharArrayWriter(字符数组输出流)
    java io系列18之 CharArrayReader(字符数组输入流)
    java io系列17之 System.out.println("hello world")原理
    java io系列16之 PrintStream(打印输出流)详解
    java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
    java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
  • 原文地址:https://www.cnblogs.com/sandea/p/3289891.html
Copyright © 2011-2022 走看看