分享

JS正则表达式

 印度阿三17 2019-08-11

定义                                                                      

  正则表达式可以理解成匹配符合要求的字符串的表达式,由普通字符和特殊字符构成,用来查找替换文本

创建                                                                      

字面量(直接量)

  在一对反斜线中写正则表达式内容,如/js/

  一般多使用字面量方式,但字面量把正则“写死了”,不能改变

构造函数

  构造正则表达式的实例,如new RexExp('js')

  内部传入的参数为字符串/字符串的变量

  如果需要根据用户输入来改变正则表达式,则用构造函数的方法创建

 

字符分类                                                               

普通字符

  字母、数字、下划线、汉字、没有特殊含义的符号(,;!@等)

  实际上不是特殊字符的字符都是普通字符

特殊字符

  \:将特殊字符转义成普通字符

模式修饰符

  i:ignoreCase,匹配时忽视大小写

  m:multiline,多行匹配

  g:global,全局匹配

  字面量创建正则时,模式修饰符写在一对反斜线后

1 var find = /js/i;

   构造对象创建正则时,模式修饰符作为第二个参数,传递给RexExp对象

1 var find = new RegExp('js','i');

 

正则的方法                                                         

test

  用来测试待检测的字符串中是否有可以匹配到正则表达式的字符串

  如果有返回true,否则返回false

1 var str = 'hello world';
2 var find = /world/;
3 console.log(find.test(str));

exec

  执行,可用来匹配字符串中符合正则表达式的字符串

  如果匹配到,返回该字符串的数组(注意这个字符串本身是不带有引号的,也就是你让它匹配的文字内容),否则返回null

  在Chrome中会返回一个数组,第一个参数为匹配上的字符串,第二个参数为该字符串第一个字母的起始位置,第三个参数为被匹配数组的全部内容

1 var str = 'hello world';
2 var find = /world/;
3 console.log(find.exec(str));

 

字符匹配方式                                                                 

字符类

  用[]括起来,会将待匹配字符从最开头到最后挨个找,看是否有字符类中的字符,如果有,返回这个字符,否则返回null

  用^表示取反,即除了字符类中的字符,其余字符只要出现就返回这个字符

  用-表示范围,即只要字符出现在字符类的范围里,就返回该字符

  表示范围时,范围的字符的ASCII码必须小于等于范围后面字符,且不可跨越大小写、数字范围,不同范围之间紧密相连即可

  

 常用字符类

  .:可取到除了换行符(\n)以外的所有字符

  \w:包含大小写字符、数字以及下划线

  \W:包含除了大小写字符、数字以及下划线之外的字符(即\w取反

  \d:包含0-9的数字

  \D:包含除了0-9数字之外的字符(即\d取反

  \s:包含空格、制表符、unicode里的多个空格符

  \S:除了空格、制表符、unicode里多个空格符之外的字符(即\s取反

  以上常用字符类无需写到[]里,但也都可以写到[]中,写入多个时,只能匹配其中一类(例如\d\s只能按目标字符串顺序,匹配数字或空格)

重复

  用添加在{}内的数字并放在字符类后,用以控制匹配字符类的次数

  其中的数字可以写两个,逗号分隔(注意逗号和数字之间不要有空格),前面的数表示下限,后面的表示上限

  下限必须小于等于上限,下限不可省略,上限可省略

  

数量的简写

  ?:表示匹配0/1次

   :表示至少匹配1次

  *:表示可匹配0次及以上

  

 非贪婪匹配

  正则表达式默认贪婪匹配,例如用 规定可以匹配一个以上的字符,正则会尽可能多地去匹配而不是取下限匹配一次

  在量词({}或简写符号)后加?,就会在条件允许下尽可能少去匹配

  (用课里说到的一个案例,说明只是尽可能去不贪婪) 

选择

  用|,表示匹配时选择其中之一即可,匹配到其中一个就输出

  实际匹配时,会按照字符串中的书写顺序,从左往右找,跟正则中的选项从左向右查找,如果匹配上其中一个,就输出

  

分组

  用()把字符类括起来,用来对整个字符类进行数量的修饰等操作,同时匹配时也会返回分组中字符类的查找结果

  当不需要返回分组中的内容时(不捕获分组中的内容),在分组的内容前加上?:即可

  

  多个括号嵌套时,从左到右以左半括号的位置,分别为第一个、第二个、第三个分组

  

引用

  对用()括起来的字符类,可以在正则表达式中用\序号的形式直接引用,其中序号表示该分组号(即是第几个分组

  引用时,该分组必须设置为捕获(即分组前不可有?:),否则返回null

  

  引用让后面匹配到和前面一样的内容(例如忽略大小写时保持前后匹配的大小写一致,匹配到同一个标签等)

  

 

位置匹配方式

   (未完待续……)

来源:https://www./content-4-387051.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多