ios uri正则表达式_匹配url的正则表达式

在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}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值