正则表达式
记录业务开发中所遇到的一些问题及解法
常用关键字
| 符号 | 作用 | 用法示例 | 解释 |
|---|---|---|---|
| | | 或者(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*$/
