RegExp

来源:互联网 发布:算法谜题 中文版 pdf 编辑:程序博客网 时间:2024/05/21 13:56

10.3模块工具214-221看

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


直接量字符
字符   匹配
字母数字字符  自身
\o       nul字符
\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");

var quote = /"([^"])"/g
text.replace(quote,"''$1''");
repalce()方法的第二个参数可以是函数改函数能够动态地计算替换字符串。

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


没有标志g
使用如下的代码来解析一个URL
var url = /(\w+):\/\/({\w.}+)\/(\S*)/;
var text = "Visit my blog at http://www.example.com/~david";
var result = text.mactch(url);
if(result !=null){
 var fullurl = result[0]; //"http://www.example.com/~david"
 var fullurl = result[1]; //"http"
 var fullurl = result[2]; //"www.example.com"
 var fullurl = 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方法
var pattern = /Java/g;
vat text = "JavaScript is more fun than Java!";
var result;
while((result = pattern.exec(text)) !=null){
 alert("Matched'"+result[0]+"'"+"at position "+result.index +
  "; next search begins at " + pattern.lastIndex);

}


var pattern = /java/i;
pattern.test("JavaScript"); //Returns true

11.3.2RegExp的实例属性
每个RegExp对象都有五个属性。
属性source 是一个只读字符串,它存放的是正则表达式的文本。
global是一个只读的布尔值,它说明了该正则表达式是否具有标志g
ignoreCase也是一个只读的布尔值,它说明了正则表达式是否具有标志i
multiline是一个只读的布尔值,它说明了正则表达式是否具有标志m
lastIndex 是一个可读写的整数。 对于具有标志g的模式,这个属性存储
在字符串中下一次开始检索的位置。

 


第12章 脚本化Java 235-255 略过

客户端JavaScript255

第13掌柜Web浏览器中的JavaScript
13.1Web浏览器环境

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

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

The Current Window

{
self,window,parent,top various Window objects

navigator Navigator object

frames[] array of Windows objects

location Location object

history History object

document Document object

screen Screen object

}

document Document object
{
forms[] array of form objects
anchors[]
array of Anchor objects
links[]
array of Link objects
images[]
array of image objecs
applets[]
array of applets
}

forms[] array of form objects
{
elements[]
array of HTML form
element objects :
Input
Select -----options[]  array of Option objects
Textarea
}

13.1.3事件驱动的编程模式