快速掌握JavaScript正则表达式(2)
作者:dh20156 来源:w3cgroup 发布时间:2010-01-23 11:39:00
貪婪與非貪婪的匹配過程
考慮以下代碼:
<script type="text/javascript">
var s = 'http://www/hello/world.php';
var r1 = /.*\//g;
var r2 = /.*?\//g;
alert(s.match(r1));
alert(s.match(r2));
</script>
//貪婪匹配
匹配整個字符串
從后逐一舍去最后一個字符繼續
http://www/hello/
//非貪婪匹配
從第一個字符開始匹配
如果失敗,讀入下一個字符繼續
http:/, /, www/, hello/
分組、反向引用與非捕獲性分組
用來匹配以一系列字符為一個單位的模式
(一系列的字符作為一個整體哦)
每創建一個分組,在執行test()、match()、search()、replace()后,可以通過全局$1...$9屬性來獲取匹配到的每一個分組。
分組匹配將帶來一定的效率損耗,如果有時候不需要獲取分組的結果,可以使用非捕獲性分組:(?:一系列的字符)
候選
用來匹配a or b or n...模式。比如,匹配文件類型:
<script type="text/javascript">
var s = 'http://www/hello/world.png.php';
var r = /(?:jpg|gif|png)$/i;
alert(r.test(s));
</script>
前瞻
正向前瞻
var r = /(aaa(?=bbb))/;
用于匹配后面緊挨著的是bbb的串aaa
負向前瞻
var r = /(aaa(?!bbb))/;
用于匹配后面緊挨著的不是bbb的串aaa
Replace
Replace中使用正則,第二個參數是函數!
<script type="text/javascript">
var str = 'aaZbbZccZ';
var s = str.replace(/(.*?)Z/g,
function(){
var ar = [];
for(var i=0;i<arguments.length;i++){
ar.push(arguments[i]);
}
alert(ar);
ar.length = 0;
return arguments[2];
}
);
alert(s);
</script>
當有反向引用時:
arguments[0]:匹配到的串
arguments[1]:$1
arguments[2]:$2
.............................
arguments[arguments.length-2]:匹配到的位置
arguments[arguments.length-1]:要匹配的字符串
否則,有3個形參:
arguments[0]:匹配到的串
arguments[1]:匹配到的位置
arguments[2]:要匹配的字符串
Replace應用
不用循环输出一至一百:
<script type="text/javascript">
var sAAA = new Array(100+1).join("a");
var sNum = sAAA.replace(/a/g,function(){
return arguments[1]+1+"<br/>"
});
document.write(sNum);
</script>
替換所有<>為[]:
<script type="text/javascript">
var str = '<a>a</a><b>b</b><c>c</c>';
var s = str.replace(/(<)|>/g,function(x,y){
return (y)?'[':']';
});
alert(s);
</script>
猜你喜欢
- XML Web Service 是在 Internet 上进行分布式计算的基本构造块。开放的标准以及对用户和应用程序之间的通信和协作的关注产
- 数据库系统的安全性包括很多方面。由于很多情况下,数据库服务器容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全有很重要的影响
- Sitepoint有一个不错的针对Web开发者和设计者的参考手册网站,可以查询HTML、CSS和JavaScript的基本信息、兼容性和示例
- 1.首先,我们需要过滤所有客户端提交的内容,其中包括?id=N一类,另外还有提交的html代码中的操作数据库的select及asp文件操作语
- 在 Google 搜索结果页面中,将其 Logo 图标右键另存为后可以发现,它并非单纯的
- 一天不小心把ROOT的权限改到最小了(只能登录,什么都做不了),这可急死我了.重装的话太麻烦,而且里面有很多的用户,一个个重新弄不知道到什么
- 这篇论坛文章(赛迪网技术社区)主要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:本文将告诉你如何配置一
- 可能很多人都要问,网站的文字还需要设计吗?对于很多的网站来说,字在整个网站的内容中占了80%以上甚至更多,或者换个角度上说,网站可以没有颜色
- 阅读上一篇:一个完美网站的101项指标.第三部分.易用性 设计体现了一个网站的艺术素养,然而并不是说您应当过分设计,设计风格应结合您的行业,
- 在做视觉设计时,如何高效地使用图标是一门学问:该使用什么样的图标?图标该放在哪里?大小如何?图标的使用是否帮助用户更好更快的理解内容,亦或是
- 数据库计算机 databasecomputer 实现数据库的存储、管理和控制的一种专用计算机系统。它能十分快速而有效地完成各种数据库操作,并
- 如何用ASP建立Index Server查询对象并为其参数赋值?我们有两个方法可以做到这一点。一个方法是利用Index Server que
- 如果网站只开了80端口,你会发现下面的方法是比较有用的,其中用的方法几乎都不是我发现的,文总包括一些注入时的个人经验和技巧方法可以说有4种(
- 如何在数据库中限制检索行数?为了照顾显示器屏幕的大小,使检索结果更整齐明了一些,请问,可以控制数据库的检索行数吗? &
- 要使数据库具备更强的抵御侵犯的能力,你要采取几步措施。有些措施只是良好的服务器管理的一部分,如拥有SQL Server最新的补丁,其他则包括
- 第一章:基本的圆角框第二章:透明圆角化背景图片第三章:圆角化图片 第四章:CSS圆角框组件 V1.0在上面的案例中,我只给出最为原始的圆角框
- 用在产品内容展示的页面上,给产品图片加上提示工具条,鼠标移动图片上即可看到效果,效果还是不错的:带黑白效果和放大图片效果(by misshj
- 比如 <div><img .../></div>想通过对这个div设置透明度来达到调整图片的透明度如果不
- 在风起云涌的互联网浪潮中,产品迭代的速度越来越快。随着用户需求的激增,也不断带来了对设计师能力要求的提高。初入交互设计领域几年来,明显发现可
- 今天的这篇文章是讲XHTML中的细节部分的,这篇续述的主题就是ID与CLASS怎么用,在标题中有提及使用原则与技巧,这里的使用原则与技巧是我