本文参考《正则表达式迷你书》javascript
正则可匹配的字符串的长度不是固定的。例如**/ab{2, 5}c/**, 含义一个a接下来2到5个b接下来是c。java
正则匹配到字符串到某一个的字符时,能够不是某个肯定的字符,能够有多种可能。例如**/a[123]b/**, 匹配的字符串能够是a1b, a2b, a3b正则表达式
虽叫字符组, 可是正则只是匹配字符组中的一个字符express
[123456abcGHIJ]
// 能够写成
[1-6a-cG-J]
复制代码
// 就是字符串中某一位不能为abc
[^abc]
复制代码
简写 | 原始 |
---|---|
\d | [0-9] |
\D | [^0-9] |
\w | [0-9a-zA-Z] |
\W | [^0-9a-zA-Z] |
\s | [\t\v\n\r\f] 空白, 水平制表, 垂直制表, 换行, 回车, 换页 |
\S | [^\t\v\n\r\f] |
. | 通配符 |
[\d\D], [\w\W], [\s\S], [^]数组
量词 | 含义 |
---|---|
{m, } | 至少出现m次 |
{m} | 出现m次 |
? | {0, 1} |
+ | {1, } |
* | {0, } |
是尽量多的匹配app
// reg会尽量多的匹配, 例如: 12345, 我会匹配12345而不匹配12
var reg = /\d{2, 5}/g;
复制代码
是尽量少的匹配spa
// reg会尽量少的匹配, 例如: 12345, 我会匹配 12, 34
// 只要知足2个, 就不会往下匹配了
var reg = /\d{2, 5}?/g
复制代码
惰性量词通常是在贪婪量词后面添加问号3d
贪婪量词 | 惰性量词 |
---|---|
{m, n} | {m, n}? |
{m, } | {m, }? |
? | ?? |
+ | +? |
* | *? |
多选分支能够支持多个子正则任选其一。注意分支匹配也是惰性的, 当匹配知足第一个后就不会第二个了。code
// 能够匹配good或者nice
var reg = /good|nice/
复制代码
var reg = /^#{1}[0-9a-fA-F]{3}$|^#{1}[0-9a-fA-F]{6}$/g
复制代码
// 匹配补0的时间格式(MM:SS)
var reg1 = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/g
// 匹配不须要补0的时间格式(M:S|MM:SS), 个位数开始0能够不写
var reg2 = /^(0?[0-9]|[1][0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/g
复制代码
var reg = /^([0-9]{4})-(0[1-9]|1[1-2])-(0[1-9]|[12][0-9]|3[01])$/g
复制代码
路径的常见格式以下:regexp
F:\study\javascript\regex\regular expression.pdf
F:\study\javascript\regex\
F:\study\javascript
var reg = /^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/g
复制代码
<div id="app" class="app"></div>
var reg = /id=".*"/
复制代码
若是使用此正则, 因为是贪婪的, 而且.是通配符包含了", 因此会匹配到最后一个"以前的所用内容(包括其余的")。咱们可使用惰性匹配模式(在量词后面添加问号)
// .*后遇到第一个"就会中止匹配
var reg1 = /id=".*?"/g
复制代码