Javascript Good Part读书笔记-JavaScript正则表达式
文章目录
正则表达式(Regular Expressions)
例子
1
|
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.-A-Za-z]+) (?::(\d+))?(?:\/( (?#)))?(?:\?( (#)))?(?:#(.*))?$/; |
解析
1 2 3 4 5 6 7 8 |
1 ^表示正则字符串开始 2 (?:([A-Za-z]+):)? 匹配schema(可选),将结果放入第1组(不包括:) 3 (\/{0,3}) 匹配0或1或2或3个/,将结果放入第2组 4 ([0-9.-A-Za-z]+) 匹配主机名,包括数字,-大小写字母。将结果放入第3组 5 (?::(\d+))? 匹配端口号。将结果放入第4组(不包括:) 6 (?:\/( ( ( (?#)))))? 匹配请求路径(可选),排除?#。将结果放入第5组(不包括/) 7 (?:\?( ( ( (#)))))? 匹配查询(可选),排除#。将结果放入第6组(不包括?) 8 (?:#(.*))? 匹配hash(可选)。将结果放入第7组(不包括#) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var url = "http://www.ora.com:80/goodparts?q#fragment"; var result = parse_url.exec(url); var names = ['url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash']; var blanks = ' '; var i; for (i = 0; i < names.length; i += 1) { document.writeln(names[i] + ':' + blanks.substring(names[i].length), result[i]); } // produces url: http://www.ora.com:80/goodparts?q#fragment scheme: http slash: // host: www.ora.com port: 80 path: goodparts query: q hash: fragment |
标识符
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1 ^开始标识符 2 (?:...)标识不捕获的分组 3 ?标识分组可选,可匹配0或1次,same as {0,1} 4 (...)标识捕获分组 5 [...]标识字符类,A-Za-z包括26个大小写字母 6 +标识匹配1或多次, same as {1,} 7 \是转义符 8 {0,3}标识匹配0或1或2或3次。如果量词包含?后缀,则会倾向于懒惰匹配 9 \d数字字符 10 [^...]标识需要排除的字符,例如[^?#]:排除?和# 11 *标识匹配0或多次,same as {0,}. 12 .标识匹配任何字符 13 $结束标识符 |
Flag标识
Flag | 意思 |
---|---|
g | 全局 |
i | 忽略大小写 |
m | 多行 |
转义
转义符 | 意思 |
---|---|
\f | 跳页 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\u | Unicode字符 |
\b | 空格 |
\d | [0-9] |
\D | [^0-9] |
\s | [\f\n\r\t\u000B\u0020\u00A0\u2028\u2029] |
\S | [^\f\n\r\t\u000B\u0020\u00A0\u2028\u2029] |
\w | [0-9A-Za-z] |
\W | [^0-9A-Za-z] |
需要转义的字符
1
|
-/[] ^ |
32个特殊的ASCII字符
1 2 3 4 5 6 7 |
`! "#$%&'()*+,-./:;<=>?@[\]^_`{|}~` //可以这样写 (?:!|"|#|$|%|&|'|(|)|*|+|,|-|.|\/|:|;|<|=|>|@|[|\|]|\^|_||\{|\||\}|~) //简单写法 [!-\/:-@\[-{-~] |
文章作者 binbin wen
上次更新 2019-11-14