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事件驱动的编程模式