正则表达式拆分url实例代码
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">背景</a></li><li><a href="#_label1">案例</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">使用js举例</a></li><li><a href="#_lab2_1_1">使用java举例</a></li></ul><li><a href="#_label2">正则说明</a></li><ul class="second_class_ul"></ul><li><a href="#_label3">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>背景</h2><p>做web开发的同学,经常会有从url中获取二级域名或者主域名或者参数等等需求,需要扎实的正则功底。本文提供一个全面的url拆分案例,需要哪个部分用哪个部分。</p>
<p class="maodian"><a name="_label1"></a></p><h2>案例</h2>
<p>将url的各个部分拆开,让我想取哪部分就取哪部分?</p>
<div class="jb51code"><pre class="brush:js;">url: http://www.baidu.com/love/java?lang=java
regex: (\w+):\/\/([^/:]+)(:\d*)?([^# ]*)
</pre></div>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>使用js举例</h3>
<div class="jb51code"><pre class="brush:js;">var url = "http://www.baidu.com:80/love/java?lang=java";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
arr = url.match(patt1);
for (var i = 0; i < arr.length ; i++) {
document.write(arr);
document.write("<br>");
}
</pre></div>
<p>输出结果如下:</p>
<blockquote><p>http://www.baidu.com:80/love/java?lang=java<br />http<br />www.baidu.com<br />:80<br />/love/java?lang=java</p></blockquote>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>使用java举例</h3>
<div class="jb51code"><pre class="brush:java;"> String url = "http://www.baidu.com:80/love/java?lang=java";
Pattern pattern = Pattern.compile("(\\w+):\\/\\/([^/:]+)(:\\d*)?([^# ]*)");
Matcher matcher = pattern.matcher(url);
matcher.find();
for (int i = 1; i <= matcher.groupCount(); i++){
System.out.println(matcher.group(i));
}
</pre></div>
<p>输出结果:</p>
<blockquote><p>http<br />www.baidu.com<br />:80<br />/love/java?lang=java</p></blockquote>
<p class="maodian"><a name="_label2"></a></p><h2>正则说明</h2>
<p>实例中的数组包含 5 个元素,索引 0 对应的是整个字符串,索引 1 对应第一个匹配符(括号内),以此类推。</p>
<p>第一个括号子表达式捕获 Web 地址的协议部分。该子表达式匹配在冒号和两个正斜杠前面的任何单词。</p>
<p>第二个括号子表达式捕获地址的域地址部分。子表达式匹配非 : 和 / 之后的一个或多个字符。</p>
<p>第三个括号子表达式捕获端口号(如果指定了的话)。该子表达式匹配冒号后面的零个或多个数字。只能重复一次该子表达式。</p>
<p>第四个括号子表达式捕获 Web 地址指定的路径和 / 或页信息。该子表达式能匹配不包括 # 或空格字符的任何字符序列。</p>
<p class="maodian"><a name="_label3"></a></p><h2>总结</h2>
頁:
[1]