初始正则

来源:互联网 发布:算法工程师培训班 编辑:程序博客网 时间:2024/06/04 19:26

本质:用来记录规则的代码
应用领域:表单验证、高级搜索
创建正则表达式对象:var 变量名= new RegExp(/表达式/);
使用直接量的方式:var 变量名= /表达式/;
基本预定义类
实用网站:正则验证应用

  • [^\n\r] 除了换行和回车之外的任意字符
  • \d [0-9] 数字字符digit
  • \D [^0-9] 非数字字符
  • \w [a-zA-Z0-9_] 单词字符(所有的字母数字和_) word
  • \W [^a-zA-Z0-9_] 非单词字符
  • \s [\f\r\n\t\v] 不可见字符 space
  • \S [^\f\r\n\t\v] 可见字符

字符类

  1. 或 : “ | ”
  2. [ ]:表示一个字符的位置 [ ] 中的内容表示可以出现的内容
  3. 简单类:[ ] 定义此字符可以出现的字符选择
  4. 负向类:[^ ] 表示该位置不能出现的字符
  5. 范围类:[a-z] 表示一段字符区间
  6. 组合类:[A-Ga-f0-7] 表示能出现字符的并集

边界和量词

  • 边界:
    • ^:只限定开头(写在[ ]中代表非)
    • $:只限定结尾
    • 开头结尾都限制:/^表达式$/ 严格模式 必须是要求的
  • 量词:
  • “*”:重复零次或更多 x>=0
    • “+”:重复一次或更多次 x>=1
    • “?”:重复零次或一次 x=(0||1)
    • {n}: n次 x=n
    • {n,}:重复n次或更多 x>=n
    • {n,m}:重复出现的次数比n多但比m少 n<=x<=m

括号总结

  • { }是量词中自定义出现次数,修饰的是紧挨着的字符
  • [ ]表示一个字符的位置,里面写的是这个位置可以出现的内容
  • ( )提高优先级,具有分组功能,小括号中的是一组

方法

  1. test()验证是否存在
    re.test(str)
  2. exec 提取
    作用:将匹配到的内容提取出来
    语法:正则对象.exec(‘字符串’) 返回一个装提取到的内容对象的数组
    如果需要全部提取,则需要全局模式开启
 1.需要开启正则的全局模式  var r = new RegExp('正则','g');  var r = /正则/g;  2.循环调用exec 直到返回null
        如:  eg: 从‘abc123ddds567sss789lkj’中提取数字  var str = ‘abc123ddds567sss789lkj’;  // 1.全局模式  var regexp = /\d+/g;  // 2.循环匹配  var result;  while(result = regexp.exec(str)){      console.log(result);  }  /*每次匹配到的都是一个数组,数组中的第0项是匹配内容的对象*/

3.分组提取

  • 将匹配到的结果进行解析,在正则中使用括号()进行分组,那么得到的结果将会是一个数组,数组的长度是正则中左括号出现的次数+1,第0项数据是整个正则的匹配结果,后续项分别是每一对括号匹配到的数据,其中从左向右出现的左括号分别被编号1,2,3…
    这里写图片描述

4.匹配但不捕获元字符
在组中添加?:后,依旧会去匹配这个组,但是不会出现在结果中
这里写图片描述
5.反向引用

  • 在正则表达式中使用组匹配到某一个数据,可以在该正则表达式中使用‘\数字’的方式引用该组,数字代表被引用组的编号
  • 这里写图片描述

6.贪婪模式

凡是在正则表达式中, 涉及到次数限定的, 一般默认都是尽可能的多匹配.取消贪婪模式. 在次数限定符后面加上 ?注意: 贪婪模式性能会略高于非贪婪模式, 所以开发的时候. 一般不考虑贪婪的问题    只有代码匹配结果出现问题了, 一般一次多匹配了, 才会取消贪婪- 多个贪婪在一起的时候的强度:第一个最强 后面强度一样/(\d+)(\d+)(\d+)/.exec('1234567');'12345','6','7'- 取消贪婪模式/(\d+?)(\d+)(\d+)/.exec('1234567');'1','23456','7'
0 0
原创粉丝点击