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