目录搜索
JScript 用户指南Jscript 基础编写 JScript 代码JScript 的变量JScript 的数据类型JScript 的运算符控制程序的流程JScript 函数Jscript对象创建自己的对象内部对象JScript 保留关键字高级 JScript创建高级对象递归变量范围复制、传递和比较数据使用数组特殊字符脚本问题解答条件编译条件编译变量在浏览器中显示信息使用消息框语言参考特性信息Microsoft JScript 特性 - ECMAMicrosoft JScript 特性 - 非-ECMAJScript 字母顺序的关健字列表JScript 错误JScript 运行时错误JScript 语法错误JScript 函数GetObject 函数ScriptEngine 函数ScriptEngineBuildVersion 函数ScriptEngineMajorVersion 函数ScriptEngineMinorVersion 函数JScript 方法A-Eabs 方法acos 方法anchor 方法apply 方法asin 方法atan 方法atan2 方法atEnd 方法big 方法blink 方法bold 方法call 方法ceil 方法charAt 方法charCodeAt 方法compile 方法concat 方法 (Array)concat 方法 (String)cos 方法decodeURI 方法decodeURIComponent 方法dimensions 方法encodeURI 方法encodeURIComponent 方法escape 方法eval 方法exec 方法exp 方法F-Ifixed 方法floor 方法fontcolor 方法fontsize 方法fromCharCode 方法getDate 方法getDay 方法getFullYear 方法getHours 方法getItem 方法getMilliseconds 方法getMinutes 方法getMonth 方法getSeconds 方法getTime 方法getTimezoneOffset 方法getUTCDate 方法getUTCDay 方法getUTCFullYear 方法getUTCHours 方法getUTCMilliseconds 方法getUTCMinutes 方法getUTCMonth 方法getUTCSeconds 方法getVarDate 方法getYear 方法indexOf 方法isFinite 方法isNaN 方法italics 方法item 方法J-Rjoin 方法lastIndexOf 方法lbound 方法link 方法localeCompare 方法log 方法match 方法max 方法min 方法moveFirst 方法moveNext 方法parse 方法parseFloat 方法parseInt 方法pop 方法pow 方法push 方法random 方法replace 方法reverse 方法round 方法Ssearch 方法setDate 方法setFullYear 方法setHours 方法setMilliseconds 方法setMinutes 方法setMonth 方法setSeconds 方法setTime 方法setUTCDate 方法setUTCFullYear 方法setUTCHours 方法setUTCMilliseconds 方法setUTCMinutes 方法setUTCMonth 方法setUTCSeconds 方法setYear 方法shift 方法sin 方法slice 方法 (Array)slice 方法 (String)small 方法sort 方法splice 方法split 方法sqrt 方法strike 方法sub 方法substr 方法substring 方法sup 方法T-Ztan 方法test 方法toArray 方法toDateString 方法toExponential 方法toFixed 方法toGMTString 方法toLocaleDateString 方法toLocaleLowerCase 方法toLocaleString 方法toLocaleTimeString 方法toLocaleUpperCase 方法toLowerCase 方法toPrecision 方法toString 方法toTimeString 方法toUpperCase 方法toUTCString 方法ubound 方法unescape 方法unshift 方法UTC 方法valueOf 方法JScript 对象ActiveXObject 对象Array 对象Boolean 对象Date 对象Enumerator 对象Error 对象Function 对象Global 对象Math 对象Number 对象Object 对象RegExp 对象正则表达式对象String 对象VBArray 对象JScript 运算符通用信息运算符优先级运算符总结加法赋值运算符 (+=)加法运算符 (+)赋值运算符 (=)按位“与”赋值运算符 (&=)按位“与”运算符 (&)按位左移运算符 (<<)按位“非”运算符 (~)按位“或”赋值运算符 (|=)按位“或”运算符 (|)按位右移运算符 (>>)按位“异或”赋值运算符 (^=)按位“异或”运算符 (^)逗号运算符 (比较运算符复合赋值运算符条件(三目)运算符 (?:)delete 运算符除法赋值运算符 (/=)除法运算符 (/)in 运算符递增 (++) 和递减 (--) 运算符instanceof 运算符左移赋值运算符 (<<=)逻辑“与”运算符 (&&)逻辑“非”运算符 (!)逻辑“或”运算符 (||)取余赋值运算符 (%=)取余运算符 (%)乘法赋值运算符 (*=)乘法运算符 (*)new 运算符右移赋值运算符 (>>=)减法赋值运算符 (-=)减法运算符 (-)typeof 运算符无符号右移运算符 (>>>)无符号右移赋值操作 (>>>=)void 运算符JScript 属性$1...$9 属性arguments 属性caller 属性constructor 属性description 属性E 属性global 属性hasOwnProperty 方法ignoreCase 属性index 属性Infinity 属性input 属性($_)isProptotyeOf 方法lastIndex 属性length 属性 (Array)length 属性 (Function)length 属性 (String)LN10 属性LN2 属性LOG10E 属性LOG2E 属性MAX_VALUE 属性message 属性MIN_VALUE 属性multiline 属性name 属性NaN 属性NaN 属性 (Global)NEGATIVE_INFINITY 属性number 属性PI 属性POSITIVE_INFINITY 属性propertyIsEnumerable 属性prototype 属性source 属性SQRT1_2 属性SQRT2 属性undefined 属性JScript 语句@cc_on 语句@if 语句@set 语句break 语句Comment 语句continue 语句do...while 语句for 语句for...in 语句function 语句if...else 语句Labeled 语句return 语句switch 语句this 语句throw 语句try...catch...finally 语句var 语句while 语句with 语句FileSystemObject 用户指南FileSystemObject 对象模型FileSystemObject 和 Scripting 运行时库参考的介绍FileSystemObject 对象设计 FileSystemObject处理驱动器和文件夹处理文件FileSystemObject 示例代码Scripting 运行时库参考脚本运行时方法Add 方法 (Dictionary)Add 方法 (Folders)BuildPath 方法Close 方法Copy 方法CopyFile 方法CopyFolder 方法CreateFolder 方法CreateTextFile 方法Delete 方法DeleteFile 方法DeleteFolder 方法DriveExists 方法Exists 方法FileExists 方法FolderExists 方法GetAbsolutePathName 方法GetBaseName 方法GetDrive 方法GetDriveName 方法GetExtensionName 方法GetFile 方法GetFileName 方法getFileVersion 方法GetFolder 方法GetParentFolderName 方法GetSpecialFolder 方法GetTempName 方法Items 方法Keys 方法Move 方法MoveFile 方法MoveFolder 方法OpenAsTextStream 方法OpenTextFile 方法Read 方法ReadAll 方法ReadLine 方法Remove 方法RemoveAll 方法Skip 方法SkipLine 方法Write 方法WriteBlankLines 方法WriteLine 方法脚本运行时对象Dictionary 对象Drive 对象Drives 集合File 对象Files 集合FileSystemObject 对象Folder 对象Folders 集合TextStream 对象脚本运行时属性AtEndOfLine 属性AtEndOfStream 属性Attributes 属性AvailableSpace 属性Column 属性CompareMode 属性Count 属性DateCreated 属性DateLastAccessed 属性DateLastModified 属性Drive 属性DriveLetter 属性Drives 属性DriveType 属性Files 属性FileSystem 属性FreeSpace 属性IsReady 属性IsRootFolder 属性Item 属性Key 属性Line 属性Name 属性ParentFolder 属性Path 属性RootFolder 属性SerialNumber 属性ShareName 属性ShortName 属性ShortPath 属性Size 属性SubFolders 属性TotalSize 属性Type 属性VolumeName 属性正则表达式简介正则表达式早期起源使用正则表达式正则表达式语法建立正则表达式优先权顺序普通字符特殊字符非打印字符字符匹配限定符定位符选择和编组后向引用
文字


选择与编组

选择允许使用 '|' 字符来在两个或多个候选项中进行选择。通过扩展章节标题的正则表达式,可以将其扩充为不仅仅适用于章节标题的表达式。不过,这可没有想象的那么直接。在使用选择时,将匹配'|' 字符每边最可能的表达式。你可能认为下面的 JScript 和 VBScript 表达式将匹配位于一行的开始和结束位置且后跟一个或两个数字的 'Chapter' 或 'Section':

/^Chapter|Section [1-9][0-9]{0,1}$/
"^Chapter|Section [1-9][0-9]{0,1}$"

不幸的是,真正的情况是上面所示的正则表达式要么匹配位于一行开始处的单词 'Chapter',要么匹配一行结束处的后跟任何数字的 'Section'。如果输入字符串为 'Chapter 22',上面的表达式将只匹配单词 'Chapter'。如果输入字符串为 'Section 22',则该表达式将匹配 'Section 22'。但这种结果不是我们此处的目的,因此必须有一种办法来使正则表达式对于所要做的更易于响应,而且确实也有这种方法。

可以使用圆括号来限制选择的范围,也就是说明确该选择只适用于这两个单词 'Chapter' 和 'Section'。不过,圆括号同样也是难处理的,因为它们也用来创建子表达式,有些内容将在后面关于子表达式的部分介绍。通过采用上面所示的正则表达式并在适当位置添加圆括号,就可以使该正则表达式既可以匹配 'Chapter 1',也可以匹配 'Section 3'。

下面的正则表达式使用圆括号将 'Chapter' 和 'Section' 组成一组,所以该表达式才能正确工作。对 JScript 为:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

对 VBScript 为:

"^(Chapter|Section) [1-9][0-9]{0,1}$"

这些表达式工作正确,只是产生了一个有趣的副产品。在 'Chapter|Section' 两边放置圆括号建立了适当的编组,但也导致两个待匹配单词之一都被捕获供今后使用。由于在上面所示的表达式中只有一组圆括号,因此只能有一个捕获的 submatch。可以使用 VBScript 的Submatches 集合或者JScript 中RegExp 对象的 $1-$9 属性来引用这个子匹配。

有时捕获一个子匹配是所希望的,有时则是不希望的。在说明所示的示例中,真正想做的就是使用圆括号对单词 'Chapter' 或 'Section' 之间的选择编组。并不希望在后面再引用该匹配。实际上,除非真的是需要捕获子匹配,否则请不要使用。由于不需要花时间和内存来存储那些子匹配,这种正则表达式的效率将更高。

可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

对 VBScript:

"^(?:Chapter|Section) [1-9][0-9]{0,1}$"

除了 '?:' 元字符,还有两个非捕获元字符用于称之为预查的匹配。一个为正向预查,用 ?= 表示, 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。一个为负向预查,用 '?!' 表示,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

例如,假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档,方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用,并将这些引用更改为 Windows 2000。可以使用下面的 JScript 正则表达式,这是一个正向预查,来匹配 Windows 95、Windows 98 以及 Windows NT:

/Windows(?=95 |98 |NT )/

在 VBScript 要进行同样的匹配可以使用下述表达式:

"Windows(?=95 |98 |NT )"

找到一个匹配后,紧接匹配到的文字(而不包括预查中使用的字符)就开始对下一次匹配的搜索。例如,如果上面所示的表达式匹配到 'Windows 98',则将从 'Windows' 而不是 '98' 之后继续查找。

上一篇:下一篇: