zoukankan      html  css  js  c++  java
  • javascript 正则表达式(十)

    一、什么是正则

    在常见的字符串检索和替换中,我们需要提供一种模式表示检索或替换的规则。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

    abc

    [a-z]{4}

    ddd

    二、一个简单的例子

    digital:数字

    /ddd/.test("123")
    //true
    /ddd/.test("abc")
    //false
    new RegExp("Bosn").test("Hi,Bosn")
    //true

    //2个斜杠括起来或者用new RegExp()表示正则,test方法如果匹配返回true,不匹配返回false。

    三、 正则基础

    用户名必须是数字,字母或者下划线,可以直接应用w。 w其实就是[A-Z0-9z-Z_]。

    四、特殊符转义

    /^abc/.test('^abc')
    //false
    /^abc/.test('^abc')
    //true

    五、分组

    六、重复

    七、三个Flag(标志位)

    1. global:全局查找
    2. ignoreCase:不区分大小写
    3. multiline:是否需要跨行检索

    gim或者mgi顺序没有关系。

    八、RegExp对象属性

    常见的RegExp对象属性有4个:

    1. global
    2. ignoreCase
    3. multiline
    4. source

    /abc/g只有一个global标签,所以global返回true,ignoreCase和multiline返回false。

    source是正则的内容,所以/abc/g这样一个正则返回"abc"这样一个字符串。

    /abc/g.global
    //true
    /abc/g.ignoreCase
    //false
    /abc/g.multiline
    //false
    /abc/g.source
    //"abc"

    九、RegExp对象方法

    1. compile
    2. exec
    3. test
    4. toString

    exec和字符串的match()方法比较类似,只是字符串的macth是一个字符串match()一个正则,而exec()是一个正则exec一个字符串

    /abc/.exec("abcdef")
    //["abc"]      匹配到的结果是abc

    toString返回整个正则的内容

    /abc/.toString()
    //"/abc/"

    compile是以特别的方法,它可以改变一些正则的属性。

    var reg=/abc/;
    reg.compile("def"); //修改正则的内容
    reg.test("def");
    //true 匹配成功

    十、字符串String类型与正则相关的方法

    1、String.prototype.search

    "abcabcdef".search(/(abc)1/);
    //0

    字符串"abcabcdef"按照正则去检索一个位置,去匹配一个分组(abc)再去引用,等价于abcabc,相当于“abcabcdef”检索一下“abcabc”的位置,所以返回0。表示从0位置开始找到了一个符合正则的字符串。

    2、String.prototype.replace

    "aabbbbcc".replace(/b+?/,"1")
    //"aa1bbbcc"

    把"aabbbbcc"中的b改成1,只更改了第一个b,我们用的是+?非贪婪算法,也就是匹配尽可能少,所以职匹配到了第一个1。

    3、String.prototype.match

    类似于search,只是说匹配出多个结果。

    "aabbbbcc".match(/b+/);
    //["bbbb"]

    贪婪算法,匹配尽可能多。

    "aabbbbccbbaa".match(/b+/g);     //用了一个g标签
    //["bbbb", "bb"]

    匹配到第一个结果后还会继续往下匹配。匹配出所有结果, 所以结果有2组数据。

    4、String.prototype.split

    split把一个字符串做分割,参数可以是正则。

    "aabbbbccbbaa".split(/b+/);
    //["aa", "cc", "aa"]

    不管几个b都可以作为分割,所以分割完了以后就是["aa","cc","aa"]。

    应用:

                var reg= /^([a-zA-Z]{8}d{8})$/;
                if(!reg.test(psd)){
                     $("#msg2").html("*请输入字母+数字的合法密码");
                       $("#msg2").show();
                    return;
                }

    十一、例子

    去空格

    str.replace(/(^s*)|(s*$)/g,"").

    本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/6418432.html有问题欢迎与我讨论,共同进步。

  • 相关阅读:
    Android存储数据方式(转)
    Android实现双进程守护 (转)
    Android DOM、SAX、Pull解析XML(转)
    TCP/IP和Socket的关系(转)
    Socket通信原理和实践
    [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)
    内存堆和栈的区别
    hdu 1754 线段树
    hdu 1166 线段树
    zoj 3686 线段树
  • 原文地址:https://www.cnblogs.com/starof/p/6418432.html
Copyright © 2011-2022 走看看