javascript正则表达式常用的合集
参考网址
{n}: n 是一个正整数,匹配了前面一个字符刚好出现了 n 次
{n,}: n是一个正整数,匹配前一个字符至少出现了n次
{n,m}: n 和 m 都是整数。匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 这个值被忽略
[ ] : 一个字符集合,匹配方括号中的任意字符,方括号内的特殊字符不必转义
\ : 匹配一些特殊字符和转义
* : 匹配前一个表达式 0 次或多次。等价于 {0,}
+ : 匹配前面一个表达式 1 次或者多次。等价于 {1,}
? : 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1}
^ : 匹配输入的开始
$ : 匹配输入的结束
( ) : 捕获括号,匹配 ( ) 内的字符并且记住匹配项
x|y : 匹配‘x’或者‘y’
\d : 匹配一个数字。等价于[0-9]
x(?=y) : 匹配’x’仅仅当’x’后面跟着’y’.这种叫做先行断言
(?<=y)x : 匹配’x’仅当’x’前面是’y’.这种叫做后行断言
//解析地址为["http", "locahost", "5500", "/public/index.html", "uname=lena&upwd=123456", "#top"]
//正则表达式2种做法
var reg10k =
/([a-z]+):\/\/([A-Za-z0-9.]+):(\d+)((\/[a-z.]+)+)\?(([a-z]+=[a-z0-9]+&?)+)#([a-z]+)/i;
var reg18k =
/[a-z]+(?=:\/\/)|(?<=:\/\/)[a-z0-9.]+(?=:)|(?<=:)\d+(?=\/)|
\/[a-z/.]+(?=\?)|(?<=\?)[a-z0-9=&]+(?=#)|#[a-z0-9]+/ig;
var url = "http://locahost:5500/public/index.html?uname=lena&upwd=123456#top"
var arr10k = url.match(reg10k);
var arr18k = url.match(reg18k);
console.log(arr10k);
console.log(arr18k);
//数组做法
//先按://切割,取第0部分——protocol
var arr = url.split("://");
var protocol = arr[0];
//剩余部分保存在变量rest中继续执行后续操作
var rest = arr[1];
//再按#切割,取第1部分——hash
var arr = rest.split("#");
var hash = `#${arr[1]}`;
rest = arr[0];
//再按?切割,取第1部分——search
var arr = rest.split("?");
var search = arr[1];
rest = arr[0];
//再按/切割
var arr = rest.split("/");
//将数组第一个元素踢出数组——主机名+端口号
var host = arr.shift();
//将剩余部分按/拼接形成相对路径
var pathname = "/" + arr.join("/");
//将host再按:切割,分成主机名和端口号
var arr = host.split(":")
var hostname = arr[0];
var port = arr[1];
console.log(protocol); //http
console.log(host); //localhost:5500
console.log(hostname); //localhost
console.log(port); //5500
console.log(pathname); // /public/index.html
console.log(search); //?lid=5
console.log(hash); //#top