js-正则

74 阅读2分钟

说明

正则表达式在js中是一个对象,相当于某个字符规则的标识。需要配合字符串类型的数据来使用,正则本身是没有实际处理能力,需要借助字符串的本身方法来进行一系列的操作。

当然啦,正则对象本身也有一些属性和方法可以使用。

常用Api

  • test

构建

两种方式:

  • 字面量

  • 构造函数(注意/的转义字符)

修饰符

g:全局

i:忽略大小写

m:多行搜索

u:Unicode 功能是否开启

y:启动用sticky

元字符

正则表达式由2种基本字符类型组成:1.原义文本字符, 2.元字符

元字符是在正则表达式中有特殊含义的非字母字符

* + ? $ ^ . | \ () {} []

  • []:某一类、范围类
  • ^:非、以开头
  • ?:出现零次或一(最多出现一次)
  • +:出现一次或多次(至少出现一次)
  • *:出现零次或多次(任意次)
  • {n}:出现n次
  • {n,m}:出现n到m次
  • {n,}:至少出现n次
  • ():分组
  • |:或
  • $:分组内容

字符类

不是单指一个字符,而是某一类字符的集合

'a1b2c3d4'.replace(/[^abc]/g,'A')
//  aAbAcAAA
匹配:不是a、b、c的字符,【全局】

范围类

表示一些常识字符的范围,比较数字0到9,字符a到z

[0-9]

[a-z]

[a-zA-Z]

demo1:

'a1b2c3d46'.replace(/[a-z]/g,'X')
// X1X2X3X46
匹配:a到z的字符, 【全局】

demo2:

问:“-”并不是特殊字符,也不是元字符,有时在类里就想要匹配“-”时该如何?

记住:“-”在中间,即一个开头,一个结尾这样的语法里,表示范围。

'2017-11-10'.replace(/[0-9-]/g,'A')
// AAAAAAAAAA

预定义类

用一些简写的方式,定义某些经常用到的规则,比如数字、单词

边界匹配符

量词

匹配一个连续出现n次数字的字符串

贪婪模式与非贪婪模式

是关于匹配次数的约定。

贪婪模式:正则表达式在匹配时会尽可能多地匹配,直到匹配失败,默认是贪婪模式。

非贪婪模式:让正则表达式尽可能少地匹配,即一旦匹配成功就不再继续往下,这就是非贪婪模式。在量词后面加?即可。

分组

()

使用 | 可达到或的效果

反向引用、分组捕获

前瞻

js正则对象属性

sticky

就用来排除前几位匹配,看MDN