RegExp对象 正则表达式

127 阅读3分钟

RegExp对象提供正则表达式的功能。

正则表达式(regular expression)是一种表达文本模式(即字符串结构)

javascript中的正则表达式用RegExp对象表示,有两种写法:一种是字面量写法,以斜杠表示和开始; var regex = /xyz/;

另一种是构造函数写法。

var regex = new RegExp('xyz');

构造函数还可以接受第二个参数,表示修饰符

var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i;

使用字面量来创建正则表达式 更加简单

语法:var 变量 = /正则表达式/匹配模式

正则表达式的匹配模式支持下列3个标志:

  • g:表示全局(global)模式,即模式将被应用于所有字符串,而并非在发现第一个匹配项时立即停止
  • i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写
  • m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项

RegExp构造函数

和普通的内置对象一样,RegExp正则表达式对象也支持new RegExp()构造函数的形式

RegExp构造函数接收两个参数:要匹配的字符串模式(pattern)和可选的标志字符串(flags),标志字符串和字面量的三个标志含义相同:'g'、'i'、'm'

使用构造函数更加灵活

元字符

| 表示或者,分隔表达式

[ ]里的内容也是或的关系 [ab]==a/b

范围 -

  正则表达式通过连字符(-)提供了范围表示法,可以简化字符组

[a-z] 任意小写字母 [A-Z]任意大写字母 [A-z] 任意字母

排除 ^

字符组的另一个类型是排除型字符组,在左方括号后紧跟一个脱字符'^'表示,表示在当前位置匹配一个没有列出的字符 

  所以[^0-9]表示0-9以外的字符

量词 来设定某个模式出现的次数

量词只对他前边的一个内容起作用

{n} 匹配n次 
{n,m} 匹配至少n次,最多m次 
{n,} 匹配至少n次 
? 相当于{0,1} 0个或1个 
* 相当于{0,} 0个或多个 
+ 相当于{1,} 至少一个

开头和结尾

^ /^a/ 匹配开头的a

/a /a/ 匹配结尾的a

/^a$/

image.png

/^a | a$/ 以a开头或以a结尾

. 表示任意字符

*使用转义字符*

\d 数字,等同于[0-9] 
\D 非数字,等同于[^0-9] 
\s 空白字符,等同于[\f\n\r\t\u000B\u0020\u00A0\u2028\u2029] 
\S 非空白字符,等同于[^\f\n\r\t\u000B\u0020\u00A0\u2028\u2029] 
\w 字母、数字、下划线,等同于[0-9A-Za-z_](汉字不属于\w) 
\W 非字母、数字、下划线,等同于[^0-9A-Za-z_] 
\b 单词边界 
\b 除了单词边界

image.png

image.png

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情