??xml version="1.0" encoding="utf-8" standalone="yes"?>
Occache 是在 Internet Explorer 3.x 的所有版本中安装?ActiveX 控g的文件夹的名U。Regsvr32.exe 文g是由 Internet Explorer 安装的,q且可用于注册和删除 ActiveX 控g的注册表V?
Internet Explorer 4.x 或更高版本,包括 Occache.dll 文gQ该文g可用于?#8220;shell 文g?#8221;枚D、更新和安全地卸?ActiveX 控g?
重要说明Q如果?zhn)q行的是 Internet Explorer 4.0Q则不应删除以下 ActiveX 控gQ?
Internet Explorer 5.0 或更高版本不要求 Downloaded Program Files 文g中的q些lg?
在?zhn)试使?Occache shell 文g夹删除一?ActiveX 控gӞ可能昄以下错误消息之一Q?
׃n冲突:
如果(zhn)要试删除?ActiveX 控g当前在内存(sh)?Internet Explorer ?#8220;zd桌面”lg加蝲Q则昄此错误消息?br />
要解x(chng)错误消息Q请按照下列步骤操作Q?
lg删除Q?br />
仅当(zhn)要删除?ActiveX 控g向已注册?Occache 文g夹以外的文g夹(例如QW(xu)indows\System ?Winnt\System32Q安装文件时Q该消息才出现在 4.01 Service Pack 1 (SP1) 之前?Internet Explorer 4 版本中。Occache 不是总能定q些文g是否正由其程序共享?
如果(zhn)确定消息中昄的一个或多个文g未由 Windows 或其他程序用,请单?#8220;?#8221;。否则,单击“?#8221;?
注意Q在 Internet Explorer 4.01 SP1 和更高版本中QOccache 不删除(或提C?zhn)删除Q注册的 Occache 文g夹之外的相关文g?
Internet Explorer 4.0 和更高版本支持多?Occache 文g夏VOccache 文g夹的列表位于以下注册表项中:(x)
默认情况下,Internet Explorer 4.0 和更高版本?Windows\Downloaded Program Files ?Winnt\Downloaded Program Files 文g夏V如果是?Internet Explorer 3.x 升的,?Occache ?Downloaded Program Files 文g夹可能都存在。在此情况下Q所有新?ActiveX 控g都安装在 Downloaded Program Files 文g夹中Q但以前安装?ActiveX 控g仍在 Occache 文g夹中工作。当(zhn)在 Windows 资源理器、Windows NT 资源理器或“我的?sh)?#8221;中打开 Occache ?Downloaded Program Files 文gҎ(gu)Q将昄所?ActiveX 控gQ而与?ActiveX 控g的文件所在的文gҎ(gu)兟뀂在此情况下Q注册表中出C下字W串|(x)
"0"="C:\\WINDOWS\\OCCACHE" "1"="C:\\WINDOWS\\Downloaded Program Files"
有关 ActiveX 控g的其他信息,请参?Microsoft 知识库中的以下文章:(x)
有关 Internet Explorer 在发生冲H(例如Q如果文件已存在Q时如何下蝲 ActiveX 控g的信息,请参?Microsoft 知识库中的以下文章:(x)
![]() |
page as displayed on a 1024x768 screen |
![]() |
![]() |
|
printed page, no print optimisation |
printed page, optimised for printing |
@media print {
body { font-size: 10pt }
}
@media screen {
body { font-size: 13px }
}
@media screen, print {
body { line-height: 1.2 }
}
<style type="text/css">
@media print {
.noprint { display: none; }
}
</style>
<table border='1' cellpadding='4' cellspacing='0' width='100%' >
<tr height='60'><td colspan='3'>
banner place-holder
</td></tr>
<tr><td width='150' valign='top' class='noprint'>
left-side content place-holder
</td><td>
<b>main content</b>
[snip!]
</td><td width='150' valign='top' class='noprint'>
right-side content place-holder
</td></tr><tr><td colspan='3'>
footer content place-holder
</td></tr>
</table>
关键字:(x) 正则表达式,Regular Expression
作者:(x)W容
发表于:(x)2004q?5?3?br />
最后更斎ͼ(x)2005q?1?7?
19:54
版权声明Q?/font>创作公用版权协议
引用地址Q?lt;a >正则表达?regular expression)</a>
NAV: W容的八时?/font> / W容的八时外资料烦(ch)?/font>
如何创徏一个网?(HOW TO: Initiate a website) Red Hat Enterprise Linux 介绍
前言
正则表达式是?ch)琐的,但是强大的,学?x)之后的应用会(x)让你除了(jin)提高效率外,?x)给你带来绝对的成就感。只要认真去阅读q些资料Q加上应用的时候进行一定的参考,掌握正则表达式不是问题?/p>
索引
1._引子
2._正则表达式的历史
3._正则表达式定?/font>
3.1_普通字W?/font>
3.2_非打印字W?/a>
3.3_Ҏ(gu)字符
3.4_限定W?/a>
3.5_定位W?/a>
3.6_选择
3.7_后向引用
4._各种操作W的q算优先U?/font>
5._全部W号解释
6._部分例子
7._正则表达式匹配规?/font>
目前Q正则表辑ּ已经在很多Y件中得到q泛的应用,包括*nixQLinux, Unix{)(j)QHP{操作系l,PHPQC#QJava{开发环境,以及(qing)很多的应用Y件中Q都可以看到正则表达式的影子?/p>
正则表达式的使用Q可以通过单的办法来实现强大的功能。ؓ(f)?jin)简单有效而又不失强大Q造成?jin)正则表辑ּ代码的难度较大,学?fn)h也不是很Ҏ(gu)Q所以需要付Z些努力才行,入门之后参照一定的参考,使用hq是比较单有效的?/p>
例子Q?span style="background-color: #00ffff;"> ^.+@.+""..+$
q样的代码曾l多ơ把我自q吓退q。可能很多h也是被这L(fng)代码l吓跑的吧。l阅L文将让你也可以自由应用这L(fng)代码?/p>
注意Q这里的W?部分跟前面的内容看v来似乎有些重复,目的是把前面表格里的部分重新描述?jin)一ơ,目的是让q些内容更容易理解?/p>
1956 q? 一位叫 Stephen Kleene 的数学家?McCulloch ?Pitts 早期工作的基上,发表?jin)一标题(sh)ؓ(f)“经|事件的表示?#8221;的论文,引入?jin)正则表辑ּ的概c(din)正则表辑ּ是用来描述他称?#8220;正则集的代数”的表辑ּQ因此采?#8220;正则表达?#8221;q个术语?/p>
随后Q发现可以将q一工作应用于?Ken Thompson 的计搜索算法的一些早期研IӞKen Thompson ?Unix 的主要发明h。正则表辑ּ的第一个实用应用程序就?Unix 中的 qed ~辑器?/p>
如他们所_(d)剩下的就是众所周知的历史了(jin)。从那时L(fng)至现在正则表辑ּ都是Z文本的编辑器和搜索工具中的一个重要部分?/p>
正则表达式是由普通字W(例如字符 a ? zQ以?qing)特D字W(UCؓ(f)元字W)(j)l成的文字模式。正则表辑ּ作ؓ(f)一个模板,某个字W模式与所搜烦(ch)的字W串q行匚w?/p>
字符 | 含义 |
---|---|
"cx | 匚w由x指明的控制字W。例如, "cM 匚w一?Control-M 或回车符。x 的值必Mؓ(f) A-Z ?a-z 之一。否则,?c 视ؓ(f)一个原义的 'c' 字符?/td> |
"f | 匚w一个换늬。等价于 "x0c ?"cL?/td> |
"n | 匚w一个换行符。等价于 "x0a ?"cJ?/td> |
"r | 匚w一个回车符。等价于 "x0d ?"cM?/td> |
"s | 匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ "f"n"r"t"v]?/td> |
"S | 匚wM非空白字W。等价于 [^ "f"n"r"t"v]?/td> |
"t | 匚w一个制表符。等价于 "x09 ?"cI?/td> |
"v | 匚w一个垂直制表符。等价于 "x0b ? "cK?/td> |
特别字符 | 说明 |
---|---|
$ | 匚w输入字符串的l尾位置。如果设|了(jin) RegExp 对象?Multiline 属性,?$ 也匹? '"n' ?'"r'。要匚w $ 字符本nQ请使用 "$?/td> |
( ) | 标记一个子表达式的开始和l束位置。子表达式可以获取供以后使用。要匚wq些字符Q请使用 "( ? ")?/td> |
* | 匚w前面的子表达式零ơ或多次。要匚w * 字符Q请使用 "*?/td> |
+ | 匚w前面的子表达式一ơ或多次。要匚w + 字符Q请使用 "+?/td> |
. | 匚w除换行符 "n之外的Q何单字符。要匚w .Q请使用 "?/td> |
[ | 标记一个中括号表达式的开始。要匚w [Q请使用 "[?/td> |
? | 匚w前面的子表达式零ơ或一ơ,或指明一个非贪婪限定W。要匚w ? 字符Q请使用 "??/td> |
" | 下一个字W标Cؓ(f)或特D字W、或原义字符、或向后引用、或八进制{义符。例如, 'n' 匚w字符 'n'?"n' 匚w换行W。序?'""' 匚w """Q?'"(' 则匹?"("?/td> |
^ | 匚w输入字符串的开始位|,除非在方括号表达式中使用Q此时它表示不接受该字符集合。要匚w ^ 字符本nQ请使用 "^?/td> |
{ | 标记限定W表辑ּ的开始。要匚w {Q请使用 "{?/td> |
| | 指明两项之间的一个选择。要匚w |Q请使用 "|?/td> |
- 构造正则表辑ּ的方法和创徏数学表达式的Ҏ(gu)一栗也是用多U元字符与操作符小的表辑ּl合在一h创徏更大的表辑ּ。正则表辑ּ的组件可以是单个的字W、字W集合、字W范围、字W间的选择或者所有这些组件的Ll合?/strong>
字符 | 描述 |
---|---|
" | 下一个字W标Cؓ(f)一个特D字W、或一个原义字W、或一?向后引用、或一个八q制转义W。例如,'n' 匚w字符 "n"?"n' 匚w一个换行符。序?'""' 匚w """ ?""(" 则匹?"("?/td> |
^ | 匚w输入字符串的开始位|。如果设|了(jin) RegExp 对象?Multiline 属性,^ 也匹? '"n' ?'"r' 之后的位|?/td> |
$ | 匚w输入字符串的l束位置。如果设|了(jin)RegExp 对象?Multiline 属性,$ 也匹?'"n' ?'"r' 之前的位|?/td> |
* | 匚w前面的子表达式零ơ或多次。例如,zo* 能匹?"z" 以及(qing) "zoo"? {h(hun)于{0,}?/td> |
+ | 匚w前面的子表达式一ơ或多次。例如,'zo+' 能匹?"zo" 以及(qing) "zoo"Q但不能匚w "z"? {h(hun)?{1,}?/td> |
? | 匚w前面的子表达式零ơ或一ơ。例如,"do(es)?" 可以匚w "do" ?"does" 中的"do" ? {h(hun)?{0,1}?/td> |
{n} | n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o?/td> |
{n,} | n 是一个非负整数。至匹配n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹? "foooood" 中的所?o?o{1,}' {h(hun)?'o+'?o{0,}' 则等价于 'o*'?/td> |
{n,m} | m ?n 均ؓ(f)非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。例如,"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h(hun)? 'o?'。请注意在逗号和两个数之间不能有空根{?/td> |
? | 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦(ch)的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦(ch)的字W串。例如,对于字符?"oooo"Q?o+?' 匹配单?"o"Q?'o+' 匹配所?'o'?/td> |
. | 匚w?""n" 之外的Q何单个字W。要匚w包括 '"n' 在内的Q何字W,请用象 '[."n]' 的模式?/td> |
(pattern) | 匚w pattern q获取这一匚w。所获取的匹配可以从产生?Matches 集合得到Q在VBScript 中?SubMatches 集合Q在JScript 中则使用 $0…$9 属性。要匚w圆括号字W,请?'"(' ? '")'?/td> |
(?:pattern) | 匚w pattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用。这在? "? 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 是一个比 'industry|industries' 更简略的表达式?/td> |
(?=pattern) | 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹? "Windows 2000" 中的 "Windows" Q但不能匚w "Windows 3.1" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦(ch)Q而不是从包含预查的字W之后开始?/td> |
(?!pattern) | 负向预查Q在M不匹?pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用。例?Windows (?!95|98|NT|2000)' 能匹? "Windows 3.1" 中的 "Windows"Q但不能匚w "Windows 2000" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦(ch)Q而不是从包含预查的字W之后开?/td> |
x|y | 匚w x ?y。例如,'z|food' 能匹?"z" ?"food"?(z|f)ood' 则匹? "zood" ?"food"?/td> |
[xyz] | 字符集合。匹配所包含的Q意一个字W。例如, '[abc]' 可以匚w "plain" 中的 'a'?/td> |
[^xyz] | 负值字W集合。匹配未包含的Q意字W。例如, '[^abc]' 可以匚w "plain" 中的'p'?/td> |
[a-z] | 字符范围。匹配指定范围内的Q意字W。例如,'[a-z]' 可以匚w 'a' ?'z' 范围内的L写字母字符?/td> |
[^a-z] | 负值字W范围。匹配Q何不在指定范围内的Q意字W。例如,'[^a-z]' 可以匚wM不在 'a' ? 'z' 范围内的L字符?/td> |
"b | 匚w一个单词边界,也就是指单词和空格间的位|。例如, 'er"b' 可以匚w"never" 中的 'er'Q但不能匚w "verb" 中的 'er'?/td> |
"B | 匚w非单词边界?er"B' 能匹?"verb" 中的 'er'Q但不能匚w "never" 中的 'er'?/td> |
"cx | 匚w?x 指明的控制字W。例如, "cM 匚w一?Control-M 或回车符。x 的值必Mؓ(f) A-Z ?a-z 之一。否则,?c 视ؓ(f)一个原义的 'c' 字符?/td> |
"d | 匚w一个数字字W。等价于 [0-9]?/td> |
"D | 匚w一个非数字字符。等价于 [^0-9]?/td> |
"f | 匚w一个换늬。等价于 "x0c ?"cL?/td> |
"n | 匚w一个换行符。等价于 "x0a ?"cJ?/td> |
"r | 匚w一个回车符。等价于 "x0d ?"cM?/td> |
"s | 匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ "f"n"r"t"v]?/td> |
"S | 匚wM非空白字W。等价于 [^ "f"n"r"t"v]?/td> |
"t | 匚w一个制表符。等价于 "x09 ?"cI?/td> |
"v | 匚w一个垂直制表符。等价于 "x0b ?"cK?/td> |
"w | 匚w包括下划U的M单词字符。等价于'[A-Za-z0-9_]'?/td> |
"W | 匚wM非单词字W。等价于 '[^A-Za-z0-9_]'?/td> |
"xn | 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ(f)定的两个数字长。例如,'"x41' 匚w "A"?"x041' 则等价于 '"x04' & "1"。正则表辑ּ中可以?ASCII ~码? |
"num | 匚w numQ其?num 是一个正整数。对所获取的匹配的引用。例如,'(.)"1' 匚w两个q箋(hu)的相同字W?/td> |
"n | 标识一个八q制转义值或一个向后引用。如?"n 之前臛_ n 个获取的子表辑ּQ则 n 为向后引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?/td> |
"nm | 标识一个八q制转义值或一个向后引用。如?"nm 之前臛_?nm 个获得子表达式,?nm 为向后引用。如?"nm 之前臛_?n 个获取,?n Z个后跟文?m 的向后引用。如果前面的条g都不满Q若 n ?m 均ؓ(f)八进制数?(0-7)Q则 "nm 匹配八q制转义?nm?/td> |
"nml | 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ(f)八进制数?(0-7)Q则匚w八进制{义? nml?/td> |
"un | 匚w nQ其?n 是一个用四个十六q制数字表示?Unicode 字符。例如, "u00A9 匚w版权W号 (?)?/td> |
正则表达?/th> | 说明 |
---|---|
/"b([a-z]+) "1"b/gi | 一个单词连l出现的位置 |
/("w+):"/"/([^/:]+)(:"d*)?([^# ]*)/ | 一个URL解析为协议、域、端口及(qing)相对路径 |
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ | 定位章节的位|?/td> |
/[-a-z]/ | A至z?6个字母再加一?受?/td> |
/ter"b/ | 可匹配chapterQ而不能terminal |
/"Bapt/ | 可匹配chapterQ而不能aptitude |
/Windows(?=95 |98 |NT )/ | 可匹配Windows95或Windows98或WindowsNT,当找C个匹配后Q从Windows后面开始进行下一ơ的(g)索匹配?/td> |
^once
q个模式包含一个特D的字符^Q表C模式只匹配那些以once开头的字符丌Ӏ例如该模式与字W串"once upon a time"匚wQ与"There once was a man from NewYork"不匹配。正如如^W号表示开头一P$W号用来匚w那些以给定模式结字符丌Ӏ?/p>
bucket$
q个模式?Who kept all of this cash in a bucket"匚wQ与"buckets"不匹配。字W^?同时使用Ӟ表示_匚wQ字W串与模式一P(j)。例如:(x)
^bucket$
只匹配字W串"bucket"。如果一个模式不包括^?Q那么它与Q何包含该模式的字W串匚w。例如:(x)模式
once
与字W串
There once was a man from NewYork
Who kept all of his cash in a bucket.
是匹配的?br />
在该模式中的字母(o-n-c-e)是字面的字符Q也是_(d)他们表示该字母本w,数字也是一L(fng)。其他一些稍微复杂的字符Q如标点W号和白字符Q空根{制表符{)(j)Q要用到转义序列。所有的转义序列都用反斜?")打头。制表符的{义序列是Q?t。所以如果我们要(g)一个字W串是否以制表符开_(d)可以用这个模式:(x)
^"t
cM的,?n表示“新行”Q?r表示回R。其他的Ҏ(gu)W号Q可以用在前面加上反斜杠Q如反斜杠本w用""表示Q句??.表示Q以此类推?br />
[ "f"r"t"n] //匚w所有的白字W?
同样的,q些也只表示一个字W,q是一个非帔R要的。如果要匚w一个由一个小写字母和一位数字组成的字符Ԍ比如"z2"?t6"?g7"Q但不是"ab2"?r2d3" ?b52"的话Q用q个模式Q?/p>
^[a-z][0-9]$
管[a-z]代表26个字母的范围Q但在这里它只能与第一个字W是写字母的字W串匚w?br />
前面曄提到^表示字符串的开_(d)但它q有另外一个含义。当在一l方括号里用^是,它表C?#8220;?#8221;?#8220;排除”的意思,常常用来剔除某个字符。还用前面的例子Q我们要求第一个字W不能是数字Q?/p>
^[^0-9][0-9]$
q个模式?&5"?g7"?-2"是匹配的Q但?12"?66"是不匚w的。下面是几个排除特定字符的例子:(x)
[^a-z] //除了(jin)写字母以外的所有字W?
[^"""/"^] //除了(jin)(")(/)(^)之外的所有字W?
[^"""'] //除了(jin)双引?")和单引号(')之外的所有字W?
Ҏ(gu)字符"."
(点,句号)在正规表辑ּ中用来表C除?#8220;新行”之外的所有字W。所以模?^.5$"与Q何两个字W的、以数字5l尾和以其他?#8220;新行”字符开头的字符串匹配。模?."可以匚wM字符Ԍ除了(jin)IZ和只包括一?#8220;新行”的字W串?br />
PHP的正规表辑ּ有一些内|的通用字符,列表如下Q?/p>
字符?含义
[[:alpha:]] M字母
[[:digit:]] M数字
[[:alnum:]] M字母和数?
[[:space:]] M白字W?
[[:upper:]] M大写字母
[[:lower:]] M写字母
[[:punct:]] M标点W号
[[:xdigit:]] M16q制的数字,相当于[0-9a-fA-F]
7.3
定重复出现
到现在ؓ(f)止,你已l知道如何去匚w一个字母或数字Q但更多的情况下Q可能要匚w一个单词或一l数字。一个单词有若干个字母组成,一l数字有若干个单数组成。跟在字W或字符后面的花括?{})用来定前面的内容的重复出现的次数?
字符?含义
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字W串
^a{2,} 如:(x)aardvark和aaabQ但apple不行
a{2,} 如:(x)baad和aaaQ但Nantucket不行
"t{2} 两个制表W?
.{2} 所有的两个字符
q些例子描述?jin)花括号的三U不同的用法。一个数字,{x}的意思是“前面的字W或字符只出现x?#8221;Q一个数字加逗号Q{x,}的意思是“前面的内容出现x或更多的ơ数”Q两个用逗号分隔的数字,{x,y}表示“前面的内容至出现xơ,但不过y?#8221;。我们可以把模式扩展到更多的单词或数字:(x)
^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划U的字符?
^[0-9]{1,}$ //所有的正数
^"-{0,1}[0-9]{1,}$ //所有的整数
^"-{0,1}[0-9]{0,}".{0,1}[0-9]{0,}$ //所有的数
最后一个例子不太好理解Q是吗?q么看吧Q与所有以一个可选的负号("-{0,1})开?^)、跟着0个或更多的数?[0-9]{0,})、和一个可选的数?".{0,1})再跟?个或多个数字([0-9]{0,})Qƈ且没有其他Q何东?$)。下面你知道能够用的更ؓ(f)单的Ҏ(gu)?br />
Ҏ(gu)字符"?"与{0,1}是相{的Q它们都代表着Q?#8220;0个或1个前面的内容”?#8220;前面的内Ҏ(gu)可选的”。所以刚才的例子可以化ؓ(f)Q?/p>
^"-?[0-9]{0,}".?[0-9]{0,}$
Ҏ(gu)字符"*"与{0,}是相{的Q它们都代表着“0个或多个前面的内?#8221;。最后,字符"+"? {1,}是相{的Q表C?#8220;1个或多个前面的内?#8221;Q所以上面的4个例子可以写成:(x)
^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划U的字符?
^[0-9]+$ //所有的正数
^"-?[0-9]+$ //所有的整数
^"-?[0-9]*".?[0-9]*$ //所有的数
当然qƈ不能从技术上降低正规表达式的复杂性,但可以它们更容易阅诅R?/p>
参考文献:(x)
JScript ?nbsp;VBScript 正则表达?/a>
微YMSDN上的例子(英文)Q?/p>
|
[注意] 文本格式的参C用引P而在用构造函数时的参数需要引受如Q?ab+c/i new RegExp("ab+c","i")是实CL(fng)功能。在构造函CQ一些特D字W需要进行{?在特D字W前?"")。如Qre = new RegExp("""w+")
正则表达式中的特D字W?
|
说了(jin)q么多了(jin)Q我们来看一些正则表辑ּ的实际应用的例子Q?
E-mail地址验证:
function test_email(strEmail) {
var myReg = /^[_a-z0-9]+@([_a-z0-9]+".)+[a-z0-9]{2,3}$/;
if(myReg.test(strEmail)) return true;
return false;
}
HTML代码的屏?
function mask_HTMLCode(strInput) {
var myReg = /<("w+)>/;
return strInput.replace(myReg, "<$1>");
}
正则表达式对象的属性及(qing)Ҏ(gu)
预定义的正则表达式拥有有以下?rn)态属性:(x)input, multiline, lastMatch, lastParen, leftContext, rightContext?1?9。其中input和multiline可以预设|。其他属性的值在执行qexec或testҎ(gu)后被Ҏ(gu)不同条g赋以不同的倹{许多属性同时拥有长和短(perl风格)的两个名字,q且Q这两个名字指向同一个倹{?JavaScript模拟perl的正则表辑ּ)
正则表达式对象的属?
属?/td> 含义 $1...$9 如果??存在Q是匚w到的子串 $_ 参见input $* 参见multiline $& 参见lastMatch $+ 参见lastParen $` 参见leftContext $' 参见rightContext constructor 创徏一个对象的一个特D的函数原型 global 是否在整个串中匹?bool? ignoreCase 匚w时是否忽略大写(bool? input 被匹配的? lastIndex 最后一ơ匹配的索引 lastParen 最后一个括hh的子? leftContext 最q一ơ匹配以左的子串 multiline 是否q行多行匚w(bool? prototype 允许附加属性给对象 rightContext 最q一ơ匹配以右的子串 source 正则表达式模? lastIndex 最后一ơ匹配的索引
正则表达式对象的Ҏ(gu)例子
Ҏ(gu) 含义 compile 正则表达式比? exec 执行查找 test q行匚w toSource q回特定对象的定?literal representing)Q其值可用来创徏一个新的对象。重载Object.toSourceҎ(gu)得到的? toString q回特定对象的串。重载Object.toStringҎ(gu)得到的? valueOf q回特定对象的原始倹{重载Object.valueOfҎ(gu)得到
<script language = "JavaScript">
var myReg = /(w+)s(w+)/;
var str = "John Smith";
var newstr = str.replace(myReg, "$2, $1");
document.write(newstr);
</script>
输?Smith, John"
〓简介?br /> 字符意义Q对于字W,通常表示按字面意义,指出接着的字Wؓ(f)Ҏ(gu)字符Q不作解释?
例如Q?b/匚w字符'b',通过在b 前面加一个反斜杠Q也是/b/Q则该字W变成特D字W,表示匚w一个单词的分界Uѝ或者:(x)对于几个字符Q通常说明是特D的Q指出紧接着的字W不是特D的Q而应该按字面解释。例如:(x)*是一个特D字W,匚wL个字W?包括0个字W?Q例如:(x)/a*/意味匚w0个或多个a。ؓ(f)?jin)匹配字面上?Q在a前面加一个反斜杠Q例如:(x)/a*/匚w'a*'?/p>〓正文?br /> 字符
意义Q对于字W,通常表示按字面意义,指出接着的字Wؓ(f)Ҏ(gu)字符Q不作解释?
例如Q?b/匚w字符'b',通过在b 前面加一个反斜杠Q也是/b/Q则该字W变成特D字W,表示
匚w一个单词的分界Uѝ?
或者:(x)
对于几个字符Q通常说明是特D的Q指出紧接着的字W不是特D的Q而应该按字面解释?
例如Q?是一个特D字W,匚wL个字W?包括0个字W?Q例如:(x)/a*/意味匚w0个或多个a?
Z(jin)匚w字面上的*Q在a前面加一个反斜杠Q例如:(x)/a*/匚w'a*'?字符^
意义Q表C匹配的字符必须在最前边?
例如Q?^A/不匹?an A,"中的'A'Q但匚w"An A."中最前面?A'?字符$
意义Q与^cMQ匹配最末的字符?
例如Q?t$/不匹?eater"中的't'Q但匚w"eat"中的't'?字符*
意义Q匹?前面的字W?ơ或nơ?
例如:/bo*/匚w"A ghost booooed"中的'boooo'?A bird warbled"中的'b'Q但不匹?A goat g
runted"中的M字符?字符+
意义Q匹?号前面的字符1ơ或nơ。等价于{1,}?
例如Q?a+/匚w"candy"中的'a'?caaaaaaandy."中的所?a'?字符?
意义Q匹?前面的字W?ơ或1ơ?
例如Q?e?le?/匚w"angel"中的'el'?angle."中的'le'?字符.
意义Q?数?匚w除换行符外的所有单个的字符?
例如Q?.n/匚w"nay, an apple is on the tree"中的'an'?on'Q但不匹?nay'?
字符(x)
意义Q匹?x'q记录匹配的倹{?
例如Q?(foo)/匚w和记?foo bar."中的'foo'。匹配子串能被结果数l中的素[1], ..., [n] q?
回,或被RegExp对象的属?1, ..., $9q回?字符x|y
意义Q匹?x'或?y'?
例如Q?green|red/匚w"green apple"中的'green'?red apple."中的'red'?字符{n}
意义Q这里的n是一个正整数。匹配前面的n个字W?
例如Q?a{2}/不匹?candy,"中的'a'Q但匚w"caandy," 中的所?a'?caaandy."中前面的两个
'a'?字符{n,}
意义Q这里的n是一个正整数。匹配至n个前面的字符?
例如Q?a{2,}不匹?candy"中的'a'Q但匚w"caandy"中的所?a'?caaaaaaandy."中的所?a'字符{n,m}
意义Q这里的n和m都是正整数。匹配至n个最多m个前面的字符?
例如Q?a{1,3}/不匹?cndy"中的M字符Q但匚w "candy,"中的'a'Q?caandy," 中的前面两个
'a'?caaaaaaandy"中前面的三个'a'Q注意:(x)即"caaaaaaandy" 中有很多?a'Q但只匹配前面的?
?a'?aaa"?字符[xyz]
意义Q一字符列表Q匹配列Z的Q一字符。你可以通过q字W?指出一个字W范围?
例如Q[abcd]跟[a-c]一栗它们匹?brisket"中的'b'?ache"中的'c'?字符[^xyz]
意义Q一字符补集Q也是_(d)它匹配除?jin)列出的字符外的所有东ѝ?你可以用连字符-指出一
字符范围?
例如Q[^abc]和[^a-c]{h(hun)Q它们最早匹?brisket"中的'r'?chop."中的'h'?字符[b]
意义Q匹配一个空?不要与bh)字符b
意义Q匹配一个单词的分界U,比如一个空?不要与[b]h)
例如Q?bnw/匚w"noonday"中的'no'Q?wyb/匚w"possibly yesterday."中的'ly'?字符B
意义Q匹配一个单词的非分界线
例如Q?wBn/匚w"noonday"中的'on'Q?yBw/匚w"possibly yesterday."中的'ye'?字符cX
意义Q这里的X是一个控制字W。匹配一个字W串的控制字W?
例如Q?cM/匚w一个字W串中的control-M?字符d
意义Q匹配一个数字,{h(hun)于[0-9]?
例如Q?d/?[0-9]/匚w"B2 is the suite number."中的'2'?字符D
意义Q匹配Q何的非数字,{h(hun)于[^0-9]?
例如Q?D/?[^0-9]/匚w"B2 is the suite number."中的'B'?字符f
意义Q匹配一个表单符字符n
意义Q匹配一个换行符字符r
意义Q匹配一个回车符字符s
意义Q匹配一个单个whiteI格W,包括I格QtabQform feedQ换行符Q等价于[ fnrtv]?
例如Q?sw*/匚w"foo bar."中的' bar'?字符S
意义Q匹配除whiteI格W以外的一个单个的字符Q等价于[^ fnrtv]?
例如Q?S/w*匚w"foo bar."中的'foo'?字符t
意义Q匹配一个制表符字符v
意义Q匹配一个顶头制表符字符w
意义Q匹配所有的数字和字母以?qing)下划线Q等价于[A-Za-z0-9_]?
例如Q?w/匚w"apple,"中的'a'Q?$5.28,"中的'5'?3D."中的'3'?字符W
意义Q匹配除数字、字母外?qing)下划线外的其它字符Q等价于[^A-Za-z0-9_]?
例如Q?W/或?[^$A-Za-z0-9_]/匚w"50%."中的'%'?字符n
意义Q这里的n是一个正整数。匹配一个正则表辑ּ的最后一个子串的n的?计数左圆括号)?例如Q?apple(,)sorange1/匚w"apple, orange, cherry, peach."中的'apple, orange'Q下?
有一个更加完整的例子?
注意Q如果左圆括号中的数字比n指定的数字还,则n取下一行的八进制escape作ؓ(f)描述?字符ooctal和xhex
意义Q这里的ooctal是一个八q制的escape|而xhex是一个十六进制的escape|允许在一个正则表辑ּ中嵌入ASCII码?/p>
首先使用dojo的工具shrinksafe(http://shrinksafe.dojotoolkit.org/)压羃一?dojo的这? 工具?x)去掉注释,他的压羃不是单的替换变量Q而是利用?jin)mozilla的一个工?对js解析后才压羃Q确保压~后的代码不?x)出错?/p>
dojo压羃后,q不?x)减太多,下一步可以用http://javascriptcompressor.com/q个站点q行更高层次的压~?可惜只能登陆q个站点再压~,只能你的js代码复制的他的文本框Q然后等他的压羃输出
l过q?步,你的js?x)变得既安?文g又小上周我也遇到?jin)ID和Name的问题,在页面里输入?jin)一个input type="hidden"Q只写了(jin)一个ID='SliceInfo'Q赋值后submitQ在后台用Request.Params["SliceInfo"]却怎么也去不到倹{后来恍然大(zhn)因该用Name来标C,于是在input里加?jin)个Name='SliceInfo'Q就一切ok?jin)?/p>
W一D里对于ID和Name的解{说的太W统?jin),当然那个解释对于ID来说是完全对的,它就是Client端HTML元素的Identity。而Name其实要复杂的多,因ؓ(f)Name有很多种的用途,所以它q不能完全由ID来代替,从而将其取消掉?/p>
具体用途有Q?/p>
用?: 作ؓ(f)可与服务器交互数据的HTML元素的服务器端的标示Q比如input、select、textarea、和button{。我们可以在服务器端Ҏ(gu)其Name通过Request.Params取得元素提交的倹{?
用?: HTML元素I(yng)nput type='radio'分组Q我们知道radio button控g在同一个分l类Qcheck操作是mutex的,同一旉只能选中一个radioQ这个分l就是根据相同的Name属性来实现的?/p>
用?: 建立面中的锚点Q我们知?a >link是获得一个页面超U链接,如果不用href属性,而改用NameQ如Q?a name="PageBottom">Q我们就获得?jin)一个页面锚炏V?/p>
用?: 作ؓ(f)对象的IdentityQ如Applet、Object、Embed{元素。比如在Applet对象实例中,我们用其Name来引用该对象?/p>
用?: 在IMG元素和MAP元素之间兌的时候,如果要定义IMG的热点区域,需要用其属性usemapQusemap="#name"(被关联的MAP元素的Name)?/p>
用?: 某些特定元素的属性,如attributeQ和param。例如ؓ(f)Object定义参数
昄q些用途都不是能简单的使用ID来代替掉的,所以HTML元素的ID和Name的却别ƈ不是w䆾证号码和姓名q样的区别,它们更本是不同作用的东ѝ?/p>
当然HTML元素的Name属性在面中也可以起那么一点ID的作用,因ؓ(f)在DHTML对象?wi)中Q我们可以?strong>document.getElementsByName来获取一个包含页面中所有指定Name元素的对象数l?/p>
在这里顺便说一下,要是面中有n(n>1)个HTML元素的ID都相同了(jin)怎么办?在DHTML对象中怎么引用他们呢?如果我们使用ASPX面Q这L(fng)情况是不Ҏ(gu)发生的,因ؓ(f)aspnetq程在处理aspx面时根本就不允许有ID非唯一Q这是页面会(x)被抛出异常而不能被正常的render。要是不是动态页面,我们要让ID重复那IE怎么搞呢Q?/p>
q个时候我们还是可以l?strong>document.getElementById获取对象Q只不过我们只能获取ID重复的那些对象中在HTML Render时第一个出现的对象。而这旉复的ID?x)在引用时自动变成一个数l,ID重复的元素按Render的顺序依ơ存在于数组中?
![]() <form target="_top"> {?Q?br /> D.asp [code] <% ' 清空Session 的操?br /> %> <script>top.location.reload();</script> [/code] {?Q?br /> ?iframe 的內容尺寸設|的?iframe 外尺寸小卛_。就是說Q定?iframe ?src 頁內容讓它的寸於 A 頁上 iframe 元素的的寸?/td> |
![]() |
![]() |
![]() 再頂一下,盼高手指點,謝Q?/td> |
![]() |
提供 CheckBox 全選與取消全?/font>
Ҏ(gu)
<script language="JavaScript">
function chkall(input1,input2)
{
var objForm = document.forms[input1];
var objLen = objForm.length;
for (var iCount = 0; iCount < objLen; iCount++)
{
if (input2.checked == true)
{
if (objForm.elements[iCount].type == "checkbox")
{
objForm.elements[iCount].checked = true;
}
}
else
{
if (objForm.elements[iCount].type == "checkbox")
{
objForm.elements[iCount].checked = false;
}
}
}
}
</script>
<form id="form1">
<input type="checkbox" value='全部選取' onclick='chkall("form1",this)' name=chk><BR>
<input type="checkbox" name="item_001" value="1">1<BR>
<input type="checkbox" name="item_002" value="2">2<BR>
<input type="checkbox" name="item_003" value="3">3<BR>
<input type="checkbox" name="item_003" value="4">4
</form>