JavaScript精粹读书笔记(7)
第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[
相关文档:
Javascript代码收藏大全
1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="retu ......
该实例首先需要创建数据库,数据库Test唯一表test,该表具有三个列分别为c1,c2,c3, int型,请自行建立数据库并插入几行测试数据。
然后我们希望能将数据库中的数据读取出来,我在此处只是将数据库数据以数据集的方式存放在本地中, ......
在看一些js框架的脚本时,被一个问题狠狠的困扰着,就是下面的代码是什么意思
var KE = {};
KE.version = '3.4.1';
KE.lang = {
source : '切换模式',
undo : '后退(Ctrl+Z)',
redo : '前进(Ctrl+Y)',
cut : '剪切(Ctrl+X)',
copy : '复制(Ctrl+C)',
paste : '粘贴(Ctrl+V)'
......
如果你想加我为好友:请点击以下链接http://hi.csdn.net/invite.php?u=8943&
c=759c7fc189ea23c1
第2章
语法
本章介绍
JavaScript
的精华部分的语法,并简要地概述其语言结构。
2.1
空白
空白可能表现为格式化字符或注释
的形式。空白 ......