zoukankan      html  css  js  c++  java
  • 【JavaScript 5—基础知识点】:正则表达式(笔记)

    一、总体概览

    1.1,什么是正则

    又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

    简单说来,就是一个描述字符模式的对象。

    1.2,正则的作用

    正则表达式主要用来验证客户端的输入数据。

    1.3,正则的好处

    客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。

    1.4,相关知识(图示)


    说明:正则的表达式,即正则的字符所代表的含义,将在文章最后通过附录的方式给出。从图中可以很明显的看出,正则表达式就是一个对象,有其声明方式,属性和方法等。特别的是,这个对象是一个字符模式。

    二、例子说明

    2.1,new运算符+test()方法

    <span style="font-family:KaiTi_GB2312;font-size:18px;">//使用new运算符的test方法
    var pattern = new RegExp("test", "i");//创建正则模式,不区分大小写
    var str = "this is a Test";//创建要比对的字符串
    alert(pattern.test(str));//结果:true</span>
    说明:test()方法是测试正则表达式的一个方法,它和exec()方法在整体上都是一样的,只是test()方法返回布尔值,而exec()方法返回匹配到的字符。

    2.2,字面量+exec()方法

    <span style="font-family:KaiTi_GB2312;font-size:18px;">//使用字面量方式的exec方法
    var pattern = /test/i;//创建正则模式,不区分大小写
    var str = "this is a Test";//创建要比对的字符串
    //alert(pattern.test(str));//结果:true
    alert(pattern.exec(str));//结果:Test
    </span>
    说明:对比使用test()方法和exec()方法返回的不同结果

    2.3,match()方法的使用

    <span style="font-family:KaiTi_GB2312;font-size:18px;">//使用match方法获取匹配数组
    var pattern = /test/ig;//不区分大小写,全局模式
    var str = "this is a Test!,that is not a Test";
    //alert(str.match(pattern));//匹配到两个,Test,Test
    alert(str.match(pattern).length);//结果:2</span>

    2.4,构造(静态)属性


    <span style="font-family:KaiTi_GB2312;font-size:18px;">//使用静态属性
    var pattern = /(t)est/;//圆括号分组,lastParen
    var str = "this is test!";
    pattern.test(str);//必须执行一下,静态属性有效
    //alert(RegExp.input);//this is test!
    //alert(RegExp.leftContext);//this is +空格
    //alert(RegExp.rightContext);//!
    //alert(RegExp.lastMatch);//test
    alert(RegExp.lastParen);//t</span>

    说明:直接调用,无须声明,但是使用静态属性会出现一些兼容性的问题,所以需要使用实例属性。

    2.5,实例属性


    <span style="font-family:KaiTi_GB2312;font-size:18px;">//使用实例属性
    var pattern = /test/ig;
    //alert(pattern.global);//true,是否全局
    //alert(pattern.ignoreCase);//true,是否忽略大小写
    //alert(pattern.multiline);//false,是否支持换行
    alert(pattern.lastIndex);//0,下次的匹配位置
    alert(pattern.source);//test,正则表达式的源字符串</span>
    说明:必须声明正则模式,才可以调用

    2.6,贪婪和惰性


    <span style="font-family:KaiTi_GB2312;font-size:18px;">//贪婪和惰性
    //var pattern = /1(.*)1/;//使用了贪婪
    var pattern = /1(.*?)1/g;//使用惰性,必须开启全局,多次匹配
    var str = "1test1 1test1 1test1";//匹配到 test1 1test1 1test
    //document.write(str.replace(pattern, "<strong>$1</strong>"));//结果:<strong>test1 1test1 1test</strong>
    //alert(pattern.exec(str));//结果:1test1 1test1 1test1,test1 1test1 1test
    document.write(str.replace(pattern, "<strong>$1</strong>"));//结果:<strong>test test test</strong></span>


    三、个人感受

    在学习正则表达式的过程中,对于这个正则表达式很有想法的。比如说,在ASP.net里面,有验证控件验证文本输入。而在这里,可以用正则表达式验证文本输入,这两者到底有什么关系,还有就是在具体的实际应用中,需要怎样去灵活的使用呢,这些都需要进一步的去了解。下篇博客再说。


    附录:正则表达式

    符号

    含义

    单个字符与数字

    .

    匹配任意字符(除换行符之外)

    [^a-z0-9]

    匹配不在方括号中的任意字符

    [a-z0-9]

    匹配方括号中的任意字符

    d

    匹配数字

    D

    匹配非数字

    W

    匹配非字母

    w

    匹配字母

    空白字符

    匹配null字符

    

    匹配空格字符

    f

    匹配禁止符

    匹配换行符

    匹配回车符

    s

    匹配空白字符、空格、制表符或换行符

    S

    匹配非空白字符

    匹配制表符

    定位符

    ^

    行首匹配

    $

    行尾匹配

    A

    只匹配字符的开始处

    

    匹配单词边界,词在[]内无效

    B

    匹配非单词边界

    G

    匹配当前搜索的开始位置

    

    匹配字符串结束处

    z

    只匹配字符串结束处

    限定符

    X?

    匹配0个或1个x

    X*

    匹配0个或任意多个x

    X+

    匹配至少1个x

    X{m,n}

    匹配最少m个,最多n个x

    分组

    (?:x)

    匹配x但不记录匹配结果

    X(?=y)

    当x后接y时,匹配x

    X(?!y)

    当x 后不是y时匹配x

    引用

    1……9,$1……$9

    返回9个在模式匹配期间找到的,最近保存的部分

    或模式

    X|y|z

    匹配x或y或z




     

  • 相关阅读:
    python模块的作用和说明
    Python列表推导式和嵌套的列表推导式
    Python数据结构 将列表作为栈和队列使用
    Python解包参数列表及 Lambda 表达式
    Python函数标注
    Python range() 函数
    python序列和其它类型的比较
    Python教程 深入条件控制
    02爬虫requests请求库
    1
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010424.html
Copyright © 2011-2022 走看看