易截截图软件、单文件、免安装、纯绿色、仅160KB

JavaScript精粹读书笔记(7)


http://blog.csdn.net/mouyong/archive/2010/01/31/5275562.aspx
第7章  正则表达式
JavaScript的许多特性都借鉴自其他语言。语法借鉴自Java,函数借鉴自Scheme,原型继承借鉴自Self。而JavaScript的正则表达式特性则借鉴自Perl。
正则表达式起源于对形式语言的数学研究。
在JavaScript中,正则表达式的语法是对Perl版的改进和发展,它非常接近源自贝尔实验室的原始形式。正则表达式的书写规则出奇的复杂,因为它们把某些位置上的字符串解析为运算符,而把仅在位置上稍微不同的相同字符串又当作字符串本身。比不易书写更糟糕的是,这使得正则表达式不仅难以阅读,而且修改时充满危险。要想正确地阅读它们,就必须对正则表达式的整个复杂性有相当彻底的理解。为了缓解这个问题,我对其规则进行了些许简化。这里所展示的正则表达式可能稍微有些不够简洁,但也会让正确地使用它们变得稍微容易一点。
有点让人感到费解的是,JavaScript的正则表达式难以分段阅读,因为它们不支持注释和空白。正则表达式的所有部分都被紧密排列在一起,使得它们几乎无法被辨认。当它们在安全应用中进行扫描和验证时,这点就须要特别地留意。如果你不能阅读和理解一个正则表达式,你如何能确保它对所有的输入都能正确地工作呢?然而,尽管有这些明显的缺点,但正则表达式还是被广泛地使用着。
7.1   一个例子
这里有一个例子。它是一个用来匹配URL的正则表达式。在JavaScript程序中,正则表达式必须写在一行中。正则表达式中的空白是至关重要的:
var parse_url=/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
   var url="http://www.ora.com:80/goodparts?q#fragment";
让我们来调用parse_url的exec方法。如果能成功地匹配我们传给它的字符串,它将会返回一个数组,该数组包含了从这个url中提取出来的片段:
   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('<br />'+names[i]+':'+blanks.substring(names[i].length),result[i]);


相关文档:

javascript 地址栏写法


0. 前言
所谓IE地址栏表达式,就是在IE的地址栏中输入 javascript:<代码>,执行某些功能,来动态改变原有页面的参数以达到某些目的,例如开放被禁止的按钮、显示原本隐藏的图片等等。本文将就IE地址栏的使用方法做一个详细的说明。
1. 表达式的书写方法
在IE的地址栏中输入 javascript:<代码>,即可在当前 ......

JavaScript精粹读书笔记(2)

如果你想加我为好友:请点击以下链接http://hi.csdn.net/invite.php?u=8943&
c=759c7fc189ea23c1
 
第2章
     
语法
本章介绍
JavaScript
的精华部分的语法,并简要地概述其语言结构。
2.1
    
空白
空白可能表现为格式化字符或注释
的形式。空白 ......

JavaScript精粹读书笔记(4)

第4章
 


JavaScript
中最好的特性就是它对函数的实现。它几乎无所不能。但是,想必你也能预料到,函数在
JavaScript
里也并非万能药。
函数包含一组语句,它们是
JavaScript
的基础模块单元,用于代码复用、信息隐藏和组合调用。函数用于指定对象的行为。一般来说,所谓编程就
是将一组需求分解成一 ......

JavaScript精粹读书笔记(5)

第5章
 
继承
在那些基于类的语言(比如
Java
)中,继承(
inheritance

extends
)提供了两个有用的服务。首先,它是代码重用的一种形式。如果一个新的类与一个已存在的类大部分相
似,那么你只须具体说明其不同点即可。类继承的另一个好处是它包括了一套类型系统的规范。由于程序员无须编写显式类型转 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号