正则表达式
了解一下常用的正则表达式语法吧~
一个正则表达式
/^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 | var regex = /\d{2,5}/g; |
惰性匹配:尽可能少的匹配
1 | var regex = /\d{2,5}?/g; |
其中/\d{2,5}?/表示,虽然2到5次都行,当2个就够的时候,就不在往下尝试了。
多选分支
(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。
要匹配”good”和”nice”可以使用/good|nice/
1 | var regex = /good|nice/g; |
单词边界
1 | The cat scattered his food all over the room. |
只是使用 /cat/ 这个正则,就会同时匹配到cat和scattered这两处文本。改写成 /\bcat\b/ 这样就能匹配到cat这个单词了。