当前位置 博文首页 > 文章内容

    js 正则表达式,JS正则表达式基本语法

    作者:dlxiaoyu01 栏目:站长日志 时间:2021-03-07 10:45:00

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



        正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
        搜索模式可用于文本搜索和文本替换。
        1、实例化RegExp
        var reg = /RegExp/RegExp Pattern
        var reg =  new RegExp(' RegExp ', ' RegExp Pattern ');需要注意的是,在JS里面\是特殊字符,要转义
        2、匹配模式(不全啦)
        g : 全局匹配(global)
        i  : 忽略大小写(iganore case)
        m: 多行搜索(multiple lines)
        3、字符类
        正则表达式一个字符匹配一个字符,如果遇到多个候选的匹配字符,可以使用字符类 [ ],即字符的集合,语义为one of多个候选的匹配字符。
        字符类取反,[^abcd],即匹配不是abcd中的内容
        4、范围类
        范围说到底也是一个集合,肯定和字符类有关联,他们都是放在中括号中的,区别就是他可以用简写的方法表示一个有规律的集合,例如0-9,a-z,A-Z。而且范围类是可以连写的,a-zA-z
        5、预定义类
        就是常用字符类的别名
        . (英文字符点) 表示除回车换行外的所有字符。 [^\r\n]
        \d (应该是digit)数字
        \D 非数字
        \w(Word,我猜的) [a-zA-Z0-9_] ,单词字符,就是命名标志符的可用的那些字符
        \W 非单词字符
        \s(space,我猜的) [\t\n\x0B\f\r]空白符
        \S 非空白符
        6、边界
        ^ 匹配以什么开头的
        $匹配以什么结尾的
        \b(不知道是border 还是boundary)以什么作为边界
        \B没有作为边界的
        (开始我以为开始和结束符是可以用边界代替的,测试了下不是的,开始和结束是整个匹配对象的开始和结束^_^)
        7、量词
        ?  出现 [0,1]次
        +  出现[1,+∞]次
        *  出现[0,+∞]次
        {n}  出现n 次
        {m,n} 出现[m,n]次
        {n,}    出现{n,+∞}次
        8、贪婪模式与非贪婪模式
        出现量词之后,就出现了尽量多匹配还是尽量少匹配的问题,默认是贪婪模式,即尽量多的匹配,假设量词为{3,5},有四个就不匹配三个,有五个就要匹配五个。启用非贪婪模式就是在量词之后加一个问号{3,5}?,我感觉可以叫做懒人模式。
        9、分组
        () 可以包含一个分组,使量词作用于分组,和数学中提高优先级的小括号有异曲同工之妙。
        10、或 |
        就是逻辑或,这里也要用分组重点标识一下,得100分的和得99分的都是别人家的孩子就是别人家的孩子: (99|100)分
        11、反向引用
        即捕获的分组,用$加数字组成,数字从1开始,$1表示第一个分组,$2表示第二个分组……
        不希望被捕获的分组只需要在分组头部加上?:即可。(?:谜一样的分组)
        12、断言
        什么是断言呢,假如我是一个女的(其实我本身就是),我要嫁一个男的,我要嫁的是男的本身没错,但是我想要他有一条狗,一百二十斤的大金狗,那我就要找了男(?=120斤的大金狗),120斤的大金狗就是断言部分。如果我要是不喜欢狗,可以这样匹配男(?!120斤的大金狗)
        13、正则对象的原型对象的方法
        test(str) //测试字符串有没有匹配成功,返回true或false
        exec(str)  //返回的是数组,第一项呢,是与正则表达式匹配的文本,之后的项是与正则表达的分组所匹配的文本;返回的数组还有两个属性,index,匹配文本的第一个字符所在的位置,input,传输的字符串
        14、字符串对象与正则表达式相关的方法
        search(reg) //参数可以为正则表达式,如果匹配到结果,就返回匹配文本的第一个字符所在的位置,否则返回-1,需要注意的是它不存在lastIndex,总是从第一个字符开始匹配的,也忽略了全局搜索。
        match(reg) //非全局匹配下与exec方法很相似的,全局匹配的话数组里返回的只有与正则表达式匹配的文本了,也没有index和input属性了
        split(reg)  //很熟悉的函数了,无需多言,仿佛其他用的不多一样,是的,渣渣用的真不多
        replace(reg,str | function) //替换函数,将匹配到的字符串用第二个参数替换,默认是非全局匹配的,传入函数的话,每一次匹配成功一次调用一次,第一个参数是匹配的文本,然后是分组,然后是当前匹配文本第一个字符的index,然后是字符串对象,函数的返回值是替换文本。