正则表达式
结构
| 标志 | 含义 |
|---|---|
| g | 全局的(匹配多次) |
| i | 忽略大小写 |
| m | 多行 |
| 标识 | 含义 |
|---|---|
| \d | 数字0-9 |
| \D | 非\d |
| \w | 数字0-9/a=z/A-z/下划线 |
| \W | 非\w |
| \s | 空格符,tab,换页,换行 |
| \S | 非\s |
| [...] | 字符范围[a-zA-Z] |
| ... | 除...外的 |
| ^...$ | ^首......尾$ |
| (...) | 捕获型分组。任何匹配这个分组的都会被捕获 |
| (?:...) | 非捕获型分组。这个分组是可选的 |
| (...)? | ? 标识匹配0次或1次 |
| x* | 贪恋。匹配>=0次 |
| x+ | 贪婪。匹配>0次 |
| x{n} | 重复n次 |
| x{n,} | 重复>=n次 |
| x{n,m} | 重复n到m次 |
常见的用法
匹配URL
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
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++) {
console.log(names[i] + ':' + blanks.substring(names[i].length), result[i]);
}