博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
匹配url的正则表达式
阅读量:6083 次
发布时间:2019-06-20

本文共 1620 字,大约阅读时间需要 5 分钟。

在javascript语言精粹 看到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 url = "http://www.ora.com:80/goodparts?q#fragment";

var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
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]);
}

执行结果:

url: http://www.ora.com:80/goodparts?q#fragment

scheme: http
slash: //
host: www.ora.com
port: 80
path: goodparts
query: q
hash: fragment

 

关于上述url的正则的部分解释:

 /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/

1.^表示开始   $表示结尾

 

 /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/

2. (?:pattern) 表示匹配pattern但不获取匹配结果

   (?:([A-Za-z]+):) 则表示匹配 ([A-Za-z]+): ,但只返回匹配到的([A-Za-z]+)的结果,并不返回:

 

 /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/

3. \*{3},因为*是特殊字符,所以用转义字符,该表达式表示匹配3个*,即***

   同理\/{0,3}表示匹配0到3个/,即没有/或者/, //, ///

 

 /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/

4. 方括号中的^表示 非 的意思

  [^?#] 则表示 非 ? 且 非 # 的其他字符

 

 /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/

* 匹配前一项0次或多次。即{0,}

?匹配前一项0次或1次。即{0,1}

 

转载于:https://www.cnblogs.com/xnn1993/p/7606189.html

你可能感兴趣的文章
我的友情链接
查看>>
linux中rsync配置
查看>>
新手IT人员,如何找到适合自己专业书籍的6个问题?
查看>>
去除JSP主机默认的8080端口
查看>>
关系型数据库之mysql-proxy实现读写分离
查看>>
EMC模拟器下载
查看>>
3月移动设备占比TOP10:苹果冠军 红米晋身第五
查看>>
阿里巴巴Java开发 之 工程规约
查看>>
我的友情链接
查看>>
我是如何在12周内由零基础成为一名程序员的——记Matt程序员快速成长之路
查看>>
windows server免安装IIS强性能LAMP+memcached
查看>>
世界杯迄今最火的一场比赛 一文看懂世界杯背后的阿里云黑科技
查看>>
罗辑思维在全链路压测方面的实践和工作笔记
查看>>
机器对外扫描,重装了系统也不行,打补丁也不行,什么原因?
查看>>
基于OpenSSL自建CA和颁发SSL证书
查看>>
vagrant+phpStorm配置xdebug
查看>>
union和union all的区别
查看>>
编写Shell管理脚本(下)
查看>>
LoadRunner 测试脚本C语言常用函数
查看>>
OpenStack-Rocky版单机部署
查看>>