javascript3

10.3模块工具214-221看

第十一章使用正则表达式的模式匹配

直接量字符

字符匹配

字母数字字符自身

\onul字符

\t制表符

\n换行符

\v垂直制表符

正则表达式的直接量字符(续)

字符匹配

\f换页符(\u000C)

\r回车(\u000D)

\xnn由十六进制数nn制定的拉丁字符,例如,\x0A等价于\n

\uxxx由十六进制xxxx制定的Unicode字符,例如,\u0009等价于\t

\cX控制字符^X。例如,\cJ等价于换行符\n

正则表达式的字符类

[...]位于括号之内的任意字符

[^...]不在括号之中的任意字符

.除换行符和其他Unicode行终止符之外的任意字符

\w任何ASCII单字字符,等价于[a-zA-Z0-9_]

\W任何非ASCII单字字符,等价于[^a-zA-Z0-9_]

\s任何Unicode空白符

\S任何非Unicode空白符的字符,注意\w和\S不同

\d任何ASCII数字,等价于[0-9]

\D除了ASCII数字之外的任何字符,等价于[^0-9]

[\b]退格直接量(特例)

正则表达式的重复字符

{n,m}匹配前一项至少n次,但是不能超过m次

{n,}匹配前一项n次,或更多次

{n}匹配前一项签好n次

?匹配前一项0次或1次,也就是说前一项是可选。等价于{0,1}

+匹配前一项1次或多次。等价于{1,}

*匹配前一项0次或多次。等价于{0,}

选择、分组和引用

|选择

(...)组合

(?:...)只组合

\n和第n个分组第一次匹配的字符相匹配

11.1.5指定匹配的位置

正则表达式的锚字符

^匹配字符串的开头,在多行检索中,匹配一行的开头

$匹配字符串的结尾,在多行检索中,匹配一行的结尾

\b匹配一个词语的边界。简而言之,就是位于字符\w和\w之间的位置,

或位于字符\w和字符串的开头或结尾之间的位置

\B匹配非词语边界的位置

(?=p)正前向声明,要求接下来的字符与模式p匹配,但是不包括匹配中的那些字符

(?!p)反前向声明,要求接下来的字符不与模式p匹配

11.1.6标志

正则表达式的标志

i执行部区分大小写的匹配

g执行一个全局匹配。简而言之,即找到所有匹配,而不是在找到第一个之后就停止

m多行模式,^匹配一行的开头和字符串的开头,$匹配一行的结尾或字符串的结尾

11.2用于模式匹配的String方法

String支持四种利用正则表达式的方法。最简单的是search()regexp。

该方法以正则表达式为参数,返回第一个与之匹配的子串的开始字符的位置,

如果没有任何匹配的子串,它将返回-1。

"JavaScript".search(/script/i);返回4

text.replace(/javascript/gi,"JavaScript");

varquote=/"([^"])"/g

text.replace(quote,"''$1''");

repalce()方法的第二个参数可以是函数改函数能够动态地计算替换字符串。

"1plus2equals3".match(/\d+/g)返回["1","2","3"]

没有标志g

使用如下的代码来解析一个URL

varurl=/(\w+):\/\/({\w.}+)\/(\S*)/;

vartext="Visitmyblogathttp://www.example.com/~david";

varresult=text.mactch(url);

if(result!=null){

varfullurl=result[0];//"http://www.example.com/~david"

varfullurl=result[1];//"http"

varfullurl=result[2];//"www.example.com"

varfullurl=result[3];//"~david"

}

没有标志g还有另外属性index(匹配字符串发生的位置)和input(被检索的字符串)

对于没有标志g的正则表达式r和字符串s.macth(r)和r.match(s)相同

"1,2,3,4,5".split(/\s*,\s*/);//Returns["1","2","3","4","5"]

11.3.1用于模式匹配的RegExp方法

varpattern=/Java/g;

vattext="JavaScriptismorefunthanJava!";

varresult;

while((result=pattern.exec(text))!=null){

alert("Matched'"+result[0]+"'"+"atposition"+result.index+

";nextsearchbeginsat"+pattern.lastIndex);

}

varpattern=/java/i;

pattern.test("JavaScript");//Returnstrue

11.3.2RegExp的实例属性

每个RegExp对象都有五个属性。

属性source是一个只读字符串,它存放的是正则表达式的文本。

global是一个只读的布尔值,它说明了该正则表达式是否具有标志g

ignoreCase也是一个只读的布尔值,它说明了正则表达式是否具有标志i

multiline是一个只读的布尔值,它说明了正则表达式是否具有标志m

lastIndex是一个可读写的整数。对于具有标志g的模式,这个属性存储

在字符串中下一次开始检索的位置。

第12章脚本化Java235-255略过

客户端JavaScript255

第13掌柜Web浏览器中的JavaScript

13.1Web浏览器环境

13.1.1作为全局执行环境的Window对象

13.1.2客户端的对象层次和文档对象模型(DOM)

TheCurrentWindow

{

self,window,parent,topvariousWindowobjects

navigatorNavigatorobject

frames[]arrayofWindowsobjects

locationLocationobject

historyHistoryobject

documentDocumentobject

screenScreenobject

}

documentDocumentobject

{

forms[]arrayofformobjects

anchors[]

arrayofAnchorobjects

links[]

arrayofLinkobjects

images[]

arrayofimageobjecs

applets[]

arrayofapplets

}

forms[]arrayofformobjects

{

elements[]

arrayofHTMLform

elementobjects:

Input

Select-----options[]arrayofOptionobjects

Textarea

}

13.1.3事件驱动的编程模式