javascript 正则表达式
正则表达式
基本结构
- 正则表达式由斜线
/
包围的模式组成,例如: /abc/
- 可以使用 new Regexp() 构造函数可以一颗创建正则表达式
元字符
.
: 匹配任何除换行之外的单个字符
*
: 匹配一个字符 0次或者多次
+
: 匹配前一个字符1次或多次
?
: 匹配前一个字符0次或1次
{n}
: 匹配一个字符正好n次
{n,}
: 匹配一个字符n次或多次
{n, m}
: 匹配一个字符至少n次,但不超过m次
^
: 匹配输出字符串的开始位置
$
: 匹配输入字符串的结束位置
\d
: 匹配一个数字字符
\D
: 匹配一个非数字字符
\w
: 匹配一个单词字符(字母、数字、下划线)
\W
: 匹配一个非单词字符
\s
: 匹配任何空白字符串,包括空格、制表符、换页符等
\S
: 陪陪任何非空字符串
\b
: 匹配一个单词边界
\B
: 匹配一个非单词边界
字符类
- 使用 方括号[] 定义一个字符集,例如:
[abc]
表示匹配 a
、b
或 c
- 可以在 方括号[]内 使用
^
符号表示否定,例如: [^abc]
表示 匹配除 a
、b
和c
之外的任意字符
选择、分组和引用
- |: 用于选择,匹配左边或者右边的模式
- (): 用于分组,可以将一部分模式组合在一起
- \1、\2: 引用前面的分组
修饰符
g
: 全局搜索,不仅返回第一个匹配,而是返回所有的匹配
i
: 不区分大小写搜索
m
: 多行搜索、让^
、$
分别匹配字符串的开始和结束,以及任何行的开始和结束
y
: 执行“粘性”搜索,要求匹配必须从给定的位置开始
u
: 将模式视为Unicode 序列点的序列,这样就能正确的吃力四个字节的UTF-16编码
s
: 让 .
特殊字符匹配任何字符(包括\n
和\w
)
方法
exec()
: 在字符串中执行搜索匹配
test()
: 检测字符串中是否有匹配
match()
: 在字符串中查找匹配项,并返回匹配的数组
replace()
: 在字符串中替换匹配项
search()
: 在字符串中搜素匹配项,并返回索引
split()
: 使用正则表达式将字符串分割为数组
正则表达式对象属性
global
: boolean, 表示是否设置了 g
修饰符
ignoreCase
: boolean, 表示是否设置了 i
修饰符
lastIndex
: 整数,表示下一次匹配的开始位置
multiline
: boolean, 表示是否设置了m
修饰符
source
: 正则表达式的源文本
sticky
: boolean, 表示是否设置了 y
修饰符
unicode
: boolean, 表示是否设置了 u
修饰符
常用正则表达式规则匹配
- 匹配数字:
/^\d+$/
: 匹配正整数
/^\d*.?\d*$/
: 匹配非负整数(包括0)
/^-[1-9]\d*$/
: 匹配负整数
/^-?\d+$/
: 匹配整数(整数、负数、0)
/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/
: 匹配正浮点数
/^\d*\.?\d*(?!\.\d)$/
: 匹配非负浮点数(包括0)
/^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/
: 匹配负浮点数
/^-?\d*\.?\d*(?!\.\d)$/
: 匹配浮点数(包括正浮点数、0、负浮点数)
- 匹配字母和数字
/^\w+$/
: 匹配由数字、26个英文字母或下划线组成的字符串
/^[A-Za-z0-9]$/
: 匹配由字母和数字组成的字符串
- 匹配中文
^[\u4e00-\u9fa5]+$
: 匹配中文字符
- 匹配特定格式
/^[a-z]+$/
: 匹配由小写字母组成的字符串
/^[A-Z]+$/
: 匹配由大写字母组成的字符串
/^[A-Za-z]+$/
: 匹配由字母组成的字符串(不区分大小写)
/^[A-Za-z0-9]+$/
: 匹配由数字和26个英文字母组成的字符串
/^\w+$/
: 匹配由数字、26个英文字母或者下划线组成的字符串
^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$
: 匹配邮箱地址
/^0\d{2}-?\d{8}$/
: 匹配国内电话号码(以3位区号、8位电话号码为例)
^\d{15}|\d{18}$
: 匹配身份证号(15位或18位)
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
: 匹配URL
- 匹配特定字符
/^\s*$/
: 匹配由空格组成的字符串
^\S*$
: 匹配由非空格字符组成的字符串
/^\t*$/
: 匹配由制表符组成的字符串
^\T*$
: 匹配由非制表符组成的字符串
- 其他常见规则匹配
/^特定字符串/
: 匹配开头是某个特定字符串
/特定字符串$/
: 匹配结尾是某个特定字符串
/.*特定字符串.*/
: 匹配包含某个特定字符串
^(?!.*特定字符串).*$
: 匹配不包含某个特定字符串