定义正则表达式可以理解成匹配符合要求的字符串的表达式,由普通字符和特殊字符构成,用来查找替换文本 创建字面量(直接量)在一对反斜线中写正则表达式内容,如/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 |
|