正则表达式

了解一下常用的正则表达式语法吧~

一个正则表达式

/^a?b+c*\d\D\w[0-9a-zA-Z_]{1,8}$/ig

语法

single char quantifiers(数量) position(位置)
\d 匹配数字 * 0个或者更多 ^ 一行的开头
\D 匹配非数字 + 1个或更多,至少1个 $ 一行的结尾
\w 匹配word(数字、字母、下划线) ? 0个或1个,一个Optional \b 单词”结界”(word bounds)
\W 匹配非word(数字、字母、下划线) {min,max}出现次数在一个范围内
\s 匹配white space(包括空格、tab等) {n}匹配出现n次的
\S 匹配非white space(包括空格、tab等)
. 匹配任何,任何的字符

贪婪匹配和惰性匹配

贪婪匹配:匹配时尽可能多的匹配

1
2
3
4
var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]

惰性匹配:尽可能少的匹配

1
2
3
4
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"]

其中/\d{2,5}?/表示,虽然2到5次都行,当2个就够的时候,就不在往下尝试了。

多选分支

(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。
要匹配”good”和”nice”可以使用/good|nice/

1
2
3
4
var regex = /good|nice/g;
var string = "good idea, nice try.";
console.log( string.match(regex) );
// => ["good", "nice"]

单词边界

1
The cat scattered his food all over the room.

只是使用 /cat/ 这个正则,就会同时匹配到cat和scattered这两处文本。改写成 /\bcat\b/ 这样就能匹配到cat这个单词了。