// 限定符
var str = "123 12345678";
var pattern = /\d{3}\s+\d{3,8}/;
"123 12345678"
/....../ : 用/.../来表示开始表达式的开始与结束
\d : 数字
\s :
{n} : 恰好匹配前面的字符 n 次
{n, m} : 匹配前面的字符 >= n, <= m 次
+ : 匹配前面的字符 >= 1 次 相当于{1,}
* : 匹配前面的字符 >= 0 次 相当于{0,}
? : 匹配前面的字符 0 或 1 次
// 反向引用
var str = "Is is the cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;
"Is is,of of,up up"
\b : 字边界,即字与空格间的位置,包括开头
\1 \2 \3 ... \n : 与圆括号相呼应,引用相应圆括号里捕获的字符串
[] : 表示范围,[a-z] 表示匹配a-z中任意一个字符
i : 放在表达式结尾,表示不区分大小写
g : 放在表达式结尾,表示匹配所有,但不包括overlap
var str = "sss://www.runoob.com:80/html/html-tutorial.html";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
sss
www.runoob.com
:80
/html/html-tutorial.html
\w : 等价于 [0-9a-zA-Z_]
\/ : 因为/(正斜杠)是特殊字符,所以需要转义,在前面加个\(反斜杠)
[^/:] : ^ 放在 [] 代表匹配除了 ^ 后边的字符
// 默认贪婪
var str = "<H1>Chapter 1 - 介绍正则表达式</H1>";
var patt1 = /<.*>/; //<H1>Chapter 1 - 介绍正则表达式</H1>
// 定位符
var str2 = "Chapter 101"
var patt2 = /^Chapter [1-9][0-9]{0,1}$/; //Chapter 101
^ : 放在最前面,代表该行的头
$ : 放在最后面,代表该行的尾
* 、+ 限定符都是贪婪的,他们会尽可能多地匹配。可以在后边加个 ? 来变成不贪婪。
// 预查
var str = "abc"
var patt1 = /a(?=b)bc/; // true,因为要找b在后面的a,并且之后跟的是bc
var patt2 = /a(b)bc/; // false,要找abbc
(?=pattern) : 表示正向肯定预查,所谓预查,就是不消耗pattern表示的字符,只对圆括号前面的字符进行匹配
(?:patt1|patt2) : 同上
(?!pattern) : 表示正向否定预查,即找不包含pattern的所有patt
var str = "2000Windows";
var patt1 = /(?<=95|98|NT|2000)Windows/; // 2000Windows
var patt2 = /(?<=3.1)Windows/; // null
(?<=pattern) : 反向肯定预查,不消耗pattern表示的字符,只对圆括号后面的字符进行匹配
(?<!pattern) : 反向否定预查
一般情况下,不是预查的话,都会消耗字符
转义符 > 圆括号和方括号 > 限定符 > 定位符和字符 > |