正则表达式
记录业务开发中所遇到的一些问题及解法
常用关键字
符号 | 作用 | 用法示例 | 解释 |
---|---|---|---|
| | 或者(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*$/
/^[a-zA-Z]([a-zA-Z]+|\d{2,})\d*$/