正则表达式是匹配模式,要么匹配字符,要么匹配位置
- 横向模糊匹配:
/ab{2,5}c/
- 纵向模糊匹配:
/a[123]b/
- 范围:
[123456abcdefGHIJKLM]
等于[1-6a-fG-M]
- 排除:
[^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]。 非空白符。.
:表示 [^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符 除外[\d\D]、[\w\W]、[\s\S] 、[^]
:表示任意
{m,}
:表示至少出现 m 次{m,}
:等价于 {m,m},表示出现 m 次?
:等价于 {0,1},表示出现或者不出现+
:等价于 {1,},表示出现至少一次*
:等价于 {0,},表示出现任意次,有可能不出现
尽可能多的匹配
var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]
尽可能少的匹配,公式:惰性匹配 = 量词 + 问号
惰性量词 | 贪婪量词 |
---|---|
{m,n}? |
{m,n} |
{m,}? |
{m,} |
?? |
? |
+? |
+ |
*? |
* |
var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["12", "12", "34", "12", "34", "12", "34", "56"]
或关系,惰性
var string = "goodbye";
var regex1 = /good|goodbye/g;
console.log( string.match(regex1) );
// => ["good"]
var regex2 = /goodbye|good/g;
console.log( string.match(regex2) );
// => ["goodbye"]
字符可以出现 3 或 6 次
// 例如:
// #ffbbad
// #Fc01DF
// #FFF
// #ffE
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
var string = "#ffbbad #Fc01DF #FFF #ffE";
console.log( string.match(regex) );
// => ["#ffbbad", "#Fc01DF", "#FFF", "#ffE"]
// 23:59
// 02:07
var regex = /^([01][0-9]|[2][0-3]):([0-5][0-9])$/
// 2017-06-10
var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
console.log( regex.test("2017-06-10") );
// => true
##5.4 window 操作系统文件路径
// F:\study\javascript\regex\regular expression.pdf
// F:\study\javascript\regex\
// F:\study\javascript
// F:\
var regex = /^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
console.log( regex.test("F:\\study\\javascript\\regex\\regular expression.pdf") );
console.log( regex.test("F:\\study\\javascript\\regex\\") );
console.log( regex.test("F:\\study\\javascript") );
console.log( regex.test("F:\\") );
// => true
// => true
// => true
// => true
var string = '<div id="container" class="main"></div>';
var regex1 = /id=".*?"/
console.log(string.match(regex1)[0]);
// => id="container"
var regex2 = /id="[^"]*"/
console.log(string.match(regex2)[0]);
// => id="container"