首页文档便民工具JavaScript正则表达式SQL教程
首页/文档/

一. 概述

正则表达式的基本组成:普通字符和元字符。

普通字符:可以理解成常使用的数字和字母。

元字符:又称特殊字符,常用来表示一些特殊语义的字符,比如 ^、$ 等。

需要注意的是,特殊字符放置位置的不同,可以代表不同的语义,比如当 ^ 放在正则表达式首位时,表示以 ... 开始,当放在字符组([])的首位时,即[^],表示非。

例如:

(1) 匹配以 start 开始的字符串:

/^start/.test("start end");
// true
/^start/.test("please start");
// false

(2) 匹配非 a、b、c 以外字母:

/[^abc]/.test("a");
// false
/[^abc]/.test("b");
// false
/[^abc]/.test("m");
// true

正是由于元字符赋予了正则的模糊匹配,而不仅仅是精准匹配,所以才能构造出强大功能。

二. 常见的元字符

1. 连字符(-)

范围表示法,可以简写字符,只在字符组([])中有效。

例如:[7-9],表示是否含有7、8或者9中的任何一个

/[7-9]/.test("1234567");
// true

2. 脱字符(^)

需注意,^ 放置不同位置,代表不同的意义。

当放在正则表达式首位(/^abc/),表示以 ... 开始,当放在字符组([])的首位时,即[^],表示非。例如:

字符串是否以7开始:

/^7/.test("1234567");
// false 

字符串中是否含有非 7、8、9数字:

/[^789]/.test("789");
// false

/[^789]/.test("1789");
// true

3. 结束符($)

用于匹配文本的末尾。

需注意,只有用于末尾,才具有结束符的意义。

例如,匹配一个必须以 world 结束的字符串:

/world$/.test("hello world");
// true

4. 字符组([])

是一个可能匹配情况的集合,只会匹配一个字符。

什么时候使用?

当匹配时,只会匹配一个,但是匹配的这个字符可能是多个字符之中的一个。

例如:[abc]字符组,表示匹配的字符可能是a、b、c三者中的一个。

范围表示法

当字符组中字符非常多的时候,这个时候,我们可以通过范围表示法来简写。范围表示法,其实是通过一个连字符(-)来实现。比如:

[12345],我们可以简写成:[1-5]

但是,如果我们在匹配时,需要匹配连字符(-)时,怎么办呢?可以两种方式:

(1)通过转义字符,比如 [a\-c]

(2)可以把连接符(-)放在字符组的开头,或者结尾,只要让正则表达式匹配时,不是范围表达式功能就行,比如:[-ac]、[ac-]

排除字符组

可以在字符组的开头加上脱字符(^),表示非或者取反的意思。

比如,我想要匹配一个不是a、b的字符:

/[^ab]/;
常用字符组的简写形式
简写 等价字符组 具体含义
\d [0-9] 表示一位数字,值可能是0、1、2、3、4、5、6、7、8、9其中一个
|D [^0-9] 表示去除数字外的任意字符
\w [0-9a-zA-Z_] 表示单词字符(包含数字、大小写字母和下划线_)
\W [^0-9a-zA-Z_] 表示非单词字符
. [^u2028u2029] 通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外
\s 表示空白符(包括空格、水平制表符、垂直制表符、换行符、回车符、换页符)
\S 非空白符

表示任意字符的表示方式:[\d\D]、[\w\W]、[\s\S]、[^]

5. 转义字符(\)

正则表达式中的特殊字符转义通常通过在字符前添加反斜杠 \ 来实现。

比如,由于 * 号在正则表达式中,表示至多0个以上,如果你想要匹配一个 * 号,需要在其前面添加 \

/\*/.test("*");
// true

6. 分组

分组是使用 () 来表示的。

使用场景:

(1)对一个子表达式进行重复

比如,想要判断一个字符串中是否出现ab两次:

/(ab){2}/.test("abab")
// true

(2)获取子表达式匹配的内容

比如,有一个字符串 hello world,我们想获取 world,我们可以这样处理:

/^hellos([\d\D]+)$/.exec("hello world")
// ["hello world", "world", index: 0, input: "hello world", groups: undefined]

7. 量词

当遇到去匹配10位长度的数字时,我们不可能写10个d,那么我们应该怎么处理呢?这个时候,就需要量词{m, n},表示出现至少m次,至多n次。

常用的一些量词:

量词 含义
{m, n} 至少m次,至多n次
{m, } 至少m次,无上限
{m} 相当于{m, m},表示出现m次
* 相当于{0, },表示出现任意次数,也可以不出现
+ 相当于{1, },表示至少出现一次,无上限
? 相当于{0, 1},表示出现0次或者1次

例如,登录密码要求:长度至少6为,至多16位,只能取数字、大小写字母:

/^[A-Za-z0-9]{8,16}$/
目录
一. 概述
二. 常见的元字符
1. 连字符(-)2. 脱字符(^)3. 结束符($)4. 字符组([])5. 转义字符(\)6. 分组7. 量词