# 正则表达式

记录业务开发中所遇到的一些问题及解法

# 常用关键字

符号 作用 用法示例 解释
| 或者(OR) /yes|no/ 匹配yes或者no
i 忽略字母大小写 /h/i 匹配h或者H
g 查询整个字符串 /ab/gi 匹配所有的ab不区分大小写
. 匹配任意字符 /.un/ 匹配run,gun,fun等
[] 匹配中括号中的一个字符 /a[sdf]b/ 匹配asb,adb,afb
- []中限定一个范围 /[a-z]/ 匹配任意小写字母
[^] 不匹配指定的内容 /[^0-9]ab/ 不包括数字母开头的*ab
+ 匹配1个或多个 /a+/ 匹配a,aa,aaa等
* 匹配0个或多个 /ab*/ 匹配a,ab,abbb等
? 匹配0个或1个 /ab?/ 匹配a,ab
.*? 惰性匹配(非贪婪) /<.*?>/ 匹配<xxx>或者</xxx>等
.* 匹配(贪婪) /<.*>/ 匹配<xx>absada</xx>
^ 匹配开头 /^ab/ 匹配开头是ab的字符串:abc
$ 匹配结尾 /ab$/ 匹配结尾是ab的字符串:dab
\w 等价于[a-zA-Z0-9_] /\w/ 匹配数字,字母,下划线
\W 等价于[^a-zA-Z0-9_] /\W/ 匹配非数字,字母,下划线
\d 等价于[0-9] /\d/ 匹配数字
\D 等价于[^0-9] /\D/ 匹配非数字
\s 等价于[ \r\t\f\n\v] /\s/ 匹配空格,换行,tab等
\S 等价于[^ \r\t\f\n\v] /\S/ 匹配非空格,换行,tab等
{x,y} 限定个数 /a{1,2}/ 匹配1-2个a
{x,} 限定个数 /a{1,}/ 匹配1-n个a
{x} 限定个数 /a{1}/ 匹配1个a
(?:pattern) 匹配pattern但不获取匹配结果 /a(?:b|c)/ 等价于ab|ac
(?=pattern) 正向肯定预查 /a(?=b|c)/ 匹配ab,ac中的a
(?!pattern) 正向否定预查 /a(!=b|c)/ 匹配ad中的a
(?<=pattern) 正向肯定预查 /(?<=a|b>)c/ 匹配ac,bc中的c
(?<!pattern) 反向否定预查 /(?<!a|b>)c/ 匹配cc,dc中的c

综合示例1

  • 用户名由数字和字母组成
  • 不能以数字开头,但可以以数字结尾
  • 字母可以大写也可以小写
  • 用户名必须至少两个字符长,两个字符的用户名只能使用字母作为字符
/^[a-zA-Z]([a-zA-Z]+|\d{2,})\d*$/
1

# 目录