javascript正则表达式常用合集

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值