zoukankan      html  css  js  c++  java
  • 正则&转义字符&特殊字符

    正则

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

    由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

    手机,身份证,邮箱正则常见案例

    手机:/(^1[3|4|5|7|8]d{9}$)|(^09d{8}$)/
    
    邮箱:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/
    
    第一代 身份证:/^[1-9]d{5}d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}$/
    
    第二代身份证:
    /^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$/

    构造函数方式

    var reg= new RegExp("study");

    var reg=new RegExp("study","ig");

    常量方式

    var reg=/study/ 等价于var reg= new RegExp("study");

    属性

    global RegExp对象是否具有标志 g。 全局 ignoreCase RegExp对象是否具有标志 i。 忽略大小写 source 正则表达式的源文本。 Multiline RegExp 对象是否具有标志 m。 不只匹配一行。

    方法

    exec(字符串) 检索字符串中指定的值。返回找到的值,如果没有匹配到,则返回null。 test (字符串) 检索字符串中指定的值。返回 true 或 false。

    使用RegExp对象的字符串函数

    var pattern = /good/ig; //全局搜索 var str = 'good good study!,day day up!'; 1,使用 match 方法获取获取匹配数组a alert(str.match(pattern)); //匹配到两个 good,good 2,使用 search 来查找匹配数据 alert(str.search(pattern)); //查找到返回位置,否则返回-1 3,使用 replace 替换匹配到的数据(找到并替换) alert(str.replace(pattern, 'hard')); //将Good替换成了hard 4,使用 split 拆分成字符串数组, var arr = str.split(pattern); //将按空格拆开字符串成数组

    特殊字符

    ^ 匹配一行的开头,/^a/匹配"abc",而不匹配“bca“
    $ 匹配一行的结尾,/a$/匹配“bca",而不匹配"abc"
    . 匹配单个字符,除了换行和行结束符,等价于[^
    ]
    * 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
    + 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
    ? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
    x|y 匹配x或y ,/a|b/ 将匹配只要出现a或者b的字符串,不含a与b的不匹配
    {n} 精确匹配n次 ,/d{4}/ 将匹配,出现连续4个d的字符串
    {n,} 匹配n次以上 ,/d{4,}/将匹配,出现连续4个及其以上多个d的字符串
    {n,m} 匹配n-m次,/d{4,6}/将匹配,出现连续4到6个d的字符串
    [xyz] 匹配这个集合中的任一一个字符,如:[a-z] 表示小写a到小写z范围的字符。
    [^xyz] 不匹配这个集合的任何一个字符 ,同样可以写范围,如:[^a-z]
    (red|blue|green) 将一些正则匹配规则合成一个小组。
    d 匹配一个数字字符,/d/ 等价于 /[0-9]/
    D 匹配一个非数字字符,/D/ 等价于 /[^0-9]/
    w 匹配一个可以组成单词(变量)的字符(包括字母,数字,下划线)等价于[a-zA-Z0-9_]
    W 匹配一个不可以组成单词的字符
    
     匹配一个换行符
    f 匹配换页符。
    
     
    匹配一个回车符
    	 匹配一个制表符
    v 匹配一个重直制表符
    s 匹配一个空白字符,包括
    ,
    ,f,	,v等
    S 匹配一个非空白字符,等于/[^
    f
    	v]/
     匹配一个单词的边界 (单词是以空格分割的)
    B 匹配一个单词的非边界
     匹配NUL 字符。
    ddd 匹配以八进制数 ddd 规定的字符。 Ru:var reg = /141/; 等价于 var reg = /a/;
    xdd 匹配以十六进制数 dd 规定的字符。
    uxxxx 匹配以十六进制数 xxxx 规定的 Unicode 字符。
    
    

    直接量字符(转义字符)

    f 换页符
    
     换行符
    
     回车
    	 制表符
    v 垂直制表符
    / 一个 / 直接量
    \ 一个  直接量
    . 一个 . 直接量
    * 一个 * 直接量
    + 一个 + 直接量
    ? 一个 ? 直接量
    | 一个 | 直接量
    ( 一个 ( 直接量
    ) 一个 ) 直接量
    [ 一个 [ 直接量
    ] 一个 ] 直接量
    { 一个 { 直接量
    } 一个 } 直接量
    - 一个-直接量

    量词

    c{n} 匹配包含 n 个 c 的序列的字符串。
    c{m,n} 匹配包含 m 到 n 个 c 的序列的字符串。
    c{n,} 匹配包含至少 n 个 c 的序列的字符串。
    c+ 匹配任何包含至少一个 c 的字符串,等价于c{1,} 。
    c* 匹配任何包含零个或多个 c 的字符串,等价于c{0,}
    c? 匹配任何包含零个或一个 c 的字符串,等价于 c{0, 1}
    c$ 匹配任何结尾为 c 的字符串。
    ^c 匹配任何开头为 c 的字符串。
    ?=c 匹配任何其后紧接指定字符串 c 的字符串。
    对其后紧跟 "all" 的 "is" 进行全局搜索.
    var str="Is this all there is"; var patt1=/is(?= all)/g;
    ?!c 匹配任何其后没有紧接指定字符串 c 的字符串。
    对其后没有紧跟 "all" 的 "is" 进行全局搜索:
    var str="Is this all there is"; var patt1=/is(?! all)/gi;

    正则封装

    function checkAll(type,value){ //type是你要验证的类型(自定),value验证该值
        switch(type) { //判断该类型
            case 'Phone': //如果类型是Phone的话,就执行下面的判断
                if((/^1[34578]d{9}$/.test(value))){
                return true;
                }else{
                return false;
                }
                break;
        case 'Email':
            if(!(/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/.test(value))){
                return false;
            }else{
                return true;
            }
            break;
        }
    }
     
  • 相关阅读:
    后缀树(suffix tree)
    哈希表(Hash Table)
    ansible报错Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this
    windows上python上传下载文件到linux服务器指定路径【转】
    MySQL参数最大连接数max_connections
    linux服务器last查看关机记录
    /etc/fstab文件详解【转】
    MySQL5.7更改用户名密码
    awk对列/行进行统计求和【转】
    passwd: Have exhausted maximum number of retries for service【转】
  • 原文地址:https://www.cnblogs.com/baiyang2292/p/11166650.html
Copyright © 2011-2022 走看看