Skip to content

正则表达式

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

常用关键字

符号作用用法示例解释
|或者(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

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

目录