目录搜索
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 属性正则表达式简介正则表达式早期起源使用正则表达式正则表达式语法建立正则表达式优先权顺序普通字符特殊字符非打印字符字符匹配限定符定位符选择和编组后向引用
文字


限定符

有时候不知道要匹配多少字符。为了能适应这种不确定性,正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

下表给出了各种限定符及其含义的说明:

字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} mn 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

对一个很大的输入文档而言,章节数很轻易就超过九章,因此需要有一种方法来处理两位数或者三位数的章节号。限定符就提供了这个功能。下面的JScript 正则表达式可以匹配具有任何位数的章节标题:

/Chapter [1-9][0-9]*/

下面的 VBScript 正则表达式执行同样的匹配:

"Chapter [1-9][0-9]*"

请注意限定符出现在范围表达式之后。因此,它将应用于所包含的整个范围表达式,在本例中,只指定了从 0 到 9 的数字。

这里没有使用 '+' 限定符,因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符,因为这将把章节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。

如果已知章节数限制只有99 章,则可以使用下面的 JScript 表达式来指定至少有一位数字,但不超过两个数字。

/Chapter [0-9]{1,2}/

对 VBScript 可以使用下述正则表达式:

"Chapter [0-9]{1,2}"

上述表达式的缺点是如果有一个章节号大于 99,它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter 0,而且仍能匹配。一个更好的用来匹配两位数的 JScript 表达式如下:

/Chapter [1-9][0-9]?/

或者

/Chapter [1-9][0-9]{0,1}/

对 VBScript 而言,下述表达式与上面等价:

"Chapter [1-9][0-9]?"

或者

"Chapter [1-9][0-9]{0,1}"

'*'、 '+'和 '?' 限定符都称之为贪婪的,也就是说,他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。

例如,你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式:

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

下面的表达式匹配从开始的小于号 (<) 到 H1 标记结束处的大于号之间的所有内容。

/<.*>/

 VBScript 的正则表达式为:

"<.*>"

如果所要匹配的就是开始的 H1 标记,则下述非贪婪地表达式就只匹配 <H1>。

/<.*?>/

或者

"<.*?>"

通过在 '*'、 '+' 或 '?' 限定符后放置 '?',该表达式就从贪婪匹配转为了非贪婪或最小匹配。

上一篇:下一篇: