一、什么是正则表达式
正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。
二、常使用正则表达式的两个字符串方法
(1)、search() 方法
此方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
(2)、replace() 方法
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
三、支持正则表达式的 String 对象的方法
search
检索与正则表达式相匹配的值。
match
找到一个或多个正则表达式的匹配。
replace
替换与正则表达式匹配的子串。
split
把字符串分割为字符串数组。
四、正则表达式修饰符(修饰符可以在全局搜索中不区分大小写)
(1)、i
执行对大小写不敏感的匹配。
(2)、g
执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
(3)、m
执行多行匹配。
五、正则表达式中的字符用法
(1)、方括号用于查找某个范围内的字符(没有指定的情况下,一个中括号只查找一个字符)
[abc]
查找方括号之间的任何字符。
[^abc]
查找任何不在方括号之间的字符。
[0-9]
查找任何从 0 至 9 的数字。
[a-z]
查找任何从小写 a 到小写 z 的字符。
[A-Z]
查找任何从大写 A 到大写 Z 的字符。
[A-z]
查找任何从大写 A 到小写 z 的字符。
[adgk]
查找给定集合内的任何字符。
[^adgk]
查找给定集合外的任何字符。
(red|blue|green)
查找任何指定的选项。
(2)、元字符是拥有特殊含义的字符
.
查找单个字符,除了换行和行结束符。
\w
查找单词字符。
\W
查找非单词字符。
\d
查找数字。
\D
查找非数字字符。
\s
查找空白字符。
\S
查找非空白字符。
\b
匹配单词边界。
\B
匹配非单词边界。
\0
查找 NUL 字符。
\n
查找换行符。
\f
查找换页符。
\r
查找回车符。
\t
查找制表符。
\v
查找垂直制表符。
\xxx
查找以八进制数 xxx 规定的字符。
\xdd
查找以十六进制数 dd 规定的字符。
\uxxxx
查找以十六进制数 xxxx 规定的 Unicode 字符。
(3)、量词
n+
匹配任何包含至少一个 n 的字符串。
n*
匹配任何包含零个或多个 n 的字符串。
n?
n 匹配任何包含零个或一个 n 的字符串。
n{X}
匹配包含 X 个 n 的序列的字符串。
n{X,Y}
匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,}
匹配包含至少 X 个 n 的序列的字符串。
n$
匹配任何结尾为 n 的字符串。
^n
匹配任何开头为 n 的字符串。
?=n
匹配任何其后紧接指定字符串 n 的字符串。
?!n
匹配任何其后没有紧接指定字符串 n 的字符串。
六、RegExp 对象
在 JavaScript 中,RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。相关信息参考网址:JavaScript RegExp对象
(1)、RegExp对象的属性
global
RegExp 对象是否具有标志 g。
ignoreCase
RegExp 对象是否具有标志 i。
lastIndex
整数,标示开始下一次匹配的字符位置。
multiline
RegExp 对象是否具有标志 m。
source
正则表达式的源文本。
(2)、RegExp对象的方法
test()
用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
exec()
用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
compile()
编译正则表达式。
七、正则表达式的常用表达
查找至少一位的数字
\d{1,} [0,9]{1,} \d+ [0,9]+
贪婪匹配(最大限度的匹配 )与拒绝贪婪匹配(最小限度匹配),例如:
str = "<b>aaa</b><b>bb>b</b><b>ccc</b>";
//将上面子串中的<b></b>标签替换成<i></i> 下面其中$1表示重复正则中第一个小括号中内容
console.log(str.replace(/<b>(.*?)<\/b>/g,"<i>$1</i>")); //.*是贪婪匹配(最大) .*?是拒绝贪婪匹配(最小)
重复正则中第一、第二、第三个小括号中内容,如:
str = "04/28/2020"; //西方日期格式,请使用正则替换成中国的[年-月-日]格式
console.log(str.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$3-$1-$2"));
//其中$1,$2 $3表示重复正则中第一、第二、第三个小括号中内容
匹配整数
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
匹配手机号、邮箱、账号、密码、年龄
^[1][0-9]{10}$ //手机号码:验证以1开头的十一位整数的手机号码
^\w+@\w+(\.\w+){1,2}$ //邮箱:以字符串开头(字符个数至少为1) + @ + 字符串(字符个数至少为1) + 以.字符串结尾(此结尾格式允许由有1至2个)
^[0-9A-Za-z_]{6,18}$ //账号:验证6到18位的账号(有效字符为数字、字母以及下划线)
.{6,18} //密码:验证6到18位的任意字符
^[+]{0,1}(\d?\d?)$ //年龄:验证大于0的任意两位整数
最后:如果自己不确定写出的正则表达式是否正确,可以通过网上的一些正则表达式校验工具来检查校验,如: 正则表达式在线校验