正则表达式详述 四

以下这些不是正则表达式的新增对象请参阅对应的Javascript对象的属性
$_属性 参考input 
$*属性 参考multiline 
$&属性 参考lastMatch 
$+属性 参考lastParen 
$`属性 参考leftContext 
$'属性 参考rightContext compile方法

在脚本运行期间编译正则表达式对象属于RegExp的方法

在Javascript 1.2, NES 3.0以上版本提供

语法: 
     regexp.compile(pattern[, flags]) 以数:
     regexp 正则表达式的名称,可以是变量名或文字串。  
     pattern 正则表达式的定义文本。
    flags 如果指定的话,可以是下面其中的一个:
        "g": 匹配所有可能的字串 ; "i": 忽略大小写 ; "gi": 匹配所有可能的字串及忽略大小写 描述: 
        使用compile方法来编译一个正则表达式 created with the RegExp constructor function。这样就强制正则表达式只编译一次,而不是每次遇到正则表达式的时候都编译一次。当你确认正则表达式能保持不变的时候可使用compile 方法来编译它(在获得它的匹配模式后),这样就可以在脚本中重复多次使用它。 
        你亦可以使用compile 方法来改变在运行期间改变正则表达式。例如,假如正则表达式发生变化, 你可以使用compile方法来重新编译该对象来提高使用效率。使用该方法将改变正则表达式的source, global和ignoreCasesource属性的值。 constructor指出建立对象原型的function。注意这个属性的值由函数本身提供,而不是一个字串包含RegExp的name.Property提供。

在Javascript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 
描述:
        参考Object.constructor.exec方法 在指定的字符串运行匹配搜索。返回一个结果数组。

是RegExp的方法  
在Javascript 1.2, NES 3.0以上版本提供

语法: regexp.exec([str])regexp([str]) 
参数: regexp,正则表达式的名称,可以是一个变量名或文字定义串。  
str,要匹配正则表达式的字符串,如果省略,将使用RegExp.input的值。

描述:就如在语法描述中的一样,正则表达工的exec方法能够被直接调用(使用regexp.exec(str))或者间接调用(使用regexp(str))。 
假如你只是运行以找出是否匹配,可以使用String搜索方法。 
假如匹配成功,exec方法返回一个数组并且更新正则表达式对象属性的值和预先定义的正则表达式对象、RegExp。如果匹配失败,exec方法返回null。 
请看下例:

<script LANGUAGE="Javascript1.2"> //匹配一个b接着一个或多个d,再接着一个b 
//忽略大小写 myRe=/d(b+)(d)/ig; myArray = myRe.exec("cdbBdbsbz"); 
</script> 下面是该脚本的返回值:对象 属性/Index 描述 例子  
myArray 
myArray的内容 ["dbBd", "bB", "d"]  
index 
基于0的匹配index 1  
input 
原始字符串 cdbBdbsbz  
[0] 
最后匹配的字符 dbBd  
[1], ...[n] 
用圆括号括住的匹配字符串,如果有的话。不限制括号的个数。 [1] = bB 
[2] = d  
myRe 
lastIndex 
开始下次匹配操作的index值 5  
ignoreCase 
指出"i"是否使用以忽略大小写 true  
global 
指出是否使用"g"标记来进行匹配所有可能的字串 true  
source 
定义模式的文本字符串 d(b+)(d)  
RegExp 
lastMatch$& 
最后匹配的字符 dbBd  
leftContext$\Q 
最新匹配前面的子串 c  
rightContext$' 
最新匹配后面的子串 bsbz  
$1, ...$9 
圆括号内的匹配子串,如果有的话。圆括号的个数不受限制,但RegExp只能保留最后9个 $1 = bB  
$2 = d  
lastParen $+ 
最后一个加上圆括号的匹配子串,如果有的话 d

假如你的正则表达式使用了"g"标记,你可以多次使用exec 方法来连续匹配相同的串。当你这样做 
的时候,新的匹配将从由正则表达式的lastIndex 属性值确定的子串中开始。
例如,假定你使用下面的脚本:

<script LANGUAGE="Javascript1.2"> 
myRe=/ab*/g;str = "abbcdefabh" 
myArray = myRe.exec(str); 
document.writeln("Found "+myArray[0]+". Next match starts at "+myRe.lastIndex) 
mySecondArray = myRe.exec(str); 
document.writeln("Found "+mySecondArray[0]+". Next match starts at "+myRe.lastIndex) 
</script>

这个脚本显示如下结果: 
Found abb. Next match starts at 3 
Found ab. Next match starts at 9

例子: 
在下面的例子中,用户输入一个名字,脚本根据输入执行匹配操作。接着检查数组看是否和其它用户的名字匹配。 
本脚本假定已注册的用户的姓已经存进了数组A中,或许从一个数据库中取得。 
<HTML> 
<script LANGUAGE="Javascript1.2"> A = ["zhao","qian","sun","li","liang"] 
function lookup() { firstName = /\w+/i(); if (!firstName) 
window.alert (RegExp.input + "非法输入"); else { count=0; 
for (i=0;i 输入你的姓然后按回车键。 
<FORM><INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);">
</FORM> 
</HTML>

global属性
 正则表达式中是否使用了"g"标记。
 RegExp属性,只读 
在Javascript 1.2, NES 3.0以上版本提供
 描述: global是一个个别正则表达式对象的属性 
如果使用了"g"标记,global的值为true;否则为 false。"g"标记指定正则表达式测试所有可能的匹配。 
你不能直接改变该属性的值,但可以调用compile方法来改变它。 ignoreCase 检查正则表达式是否使用了"i"标记

RegExp属性,只读 在Javascript 1.2, NES 3.0以上版本提供 
描述: 
ignoreCase是个别正则表达式对象的一个属性。 
如果使用了"i"标记,则返回true,否则返回false。"i"标记指示在进行匹配的时候忽略大小写。 
你不能直接改变该属性的值,但可以通过调用compile方法来改变它 input 指出正则表达式要测试那个字串。$_是这个属性的另一个名字。

RegExp的属性,静态 在Javascript 1.2, NES 3.0以上版本提供  
描述:因为input是静态的,不是某个个别的正则表达式对象的属性。你也可以使用 RegExp.input来表示。 
如果没有给正则表达式的exec或test方法提供字符串,并且RegExp.input中有值,则使用它的值来调用该方法。 
脚本或浏览器能够预置input属性。如果被预置了值且调用exec或 test方法的时候没有提供字符串 
则调用exec或test的时候使用input的值。input可以被浏览器以下面的方式设置: 
当text表单域处理句柄被调用的时候,input被设置为该text输入的字串。 
当textarea表单域处理句柄被调用的时候,input被设置为textarea域内输入的字串。注意multili 
ne亦被设置成true从而能匹配多行文本。 当select表单域处理句柄被调用的时候,input被设置成selected text的值。 
当链接对象的处理句柄被调用的时候,input被设置成<A HREF=...>和</A>之间的字符串。 
事件理现句柄处理完毕后,input属性的值被清除。 lastIndex 可读/可写的一个整数属性,指出下一次匹配从哪里开始。

RegExp的属性 在Javascript 1.2, NES 3.0以上版本提供  
描述:lastIndex 是个别的正则表达式对象的属性。 这个属性只有当正则表达式的"g"标记被使用以进行全串匹配的时候才被设置。实行以下规则: 
如果lastIndex大小字符串的长度,regexp.test和regexp.exec失败,且lastIndex被设为0。 
如果lastIndex等于字串的长度且正则表达式匹配空字符串,则正则表达式从lastIndex的位置开始匹配。 
如果lastIndex等于字符串的长度且正则表达式不匹配空字符串,则正则表达式不匹配input,且lastIndex被置为0。 
否则,lastIndex被设置成最近一次匹配的下一点。 例如,按下面的顺序执行脚本: re = /(hi)?/g 匹配空字符串  
re("hi") 返回["hi", "hi"],lastIndex置为2  
re("hi") 返回[""],一个空数组,它的下标为0的元素就是匹配字符串。在这种情况下,返回空 
串是因为lastIndex等于2(且仍然是2),并且"hi"的长度也是2。 lastMatch 最后一次匹配字符串,$&是同样的意思。

RegExp的属性,静态,只读 在Javascript 1.2, NES 3.0以上版本提供  
描述:因为lastMatch是静态的,所以它不是个别指定正则表达式的属性。你也可以使用RegExp.lastMatch。 lastParen 
最后一次加上括号的匹配字符串,如果有的话。$+是同样的意思。

RegExp属性,静态,只读 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因为lastParen是静态的,它不是某个个别正则式的属性,你可以使用RegExp.lastParen 表达同样的意思。 
leftContext 最近一次匹配前面的子串,$`具有相同的意思。

RegExp的属性,静态,只读 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因为leftContext是静态的,不是某一个正则表达式的属性,所以可以使用RegExp.leftContext来表达想同的意思。 
multiline 反映是否匹配多行文本,$*是相同的意思。

RegExp的属性,静态 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因为multiline是静态的,而不是某个个别正则表达式的属性,所以能够用RegExp.multiline表达相同的意思。 
如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false。 
脚本或浏览器能够设置multiline属性。当一个textarea的事件处理句柄被调用的时候,multiline 
被置为true。在事件处理句柄处理完毕后,multiline属性值被清除。也就是说,如果你设置了multili 
ne为true,则执行任何的事件处理句柄后,multiline被置为false。

prototype  
描绘类的原型。你可以根据要求使用prototype来增加类的属性或方法。为了获得prototypes 的资 
料,请参阅RegExp的function.prototype.Property属性。 从Javascript 1.1, NES 2.0版本开始提供 
ECMA版本ECMA-262 rightContext 最后一次匹配的右边的字符串,$'是同样的效果。 
RegExp的属性,静态,只读 从 Javascript 1.2, NES 3.0以上版本开始提供  
描述:因为rightContext是静态的,不是某个个别正则表达工的属性,可以使用RegExp.rightContext来达到相同的效果。 
source 一个只读属性,包含正则表达式定义的模式,不包侨forward slashes和"g"或"i"标记。

RegExp的属性,只读 
从Javascript 1.2, NES 3.0以上版本开始提供  
描述:source是个别正则表达式对象的属性,你不能直接改变它的值,但可以通过调用compile 方法来改变它。 test 
执行指定字符串的正则表达式匹配搜索,返回true或false。 RegExp的方法 
从Javascript 1.2, NES 3.0以上版本开始提供 语法:regexp.test([str]) 
参数:regexp,正则表达式的名称,可以是变量名或正则表达式定义文字串 
str,要匹配的字符串,如果省略,将使用RegExp.input的值为作参数 
描述:当你需要知道一个字符串能否匹配某个正则表达工,可以使用test方法(与String.search方 
法类似); 为了获得更多的信息(但速度将变慢),可以使用exec方法(与String.match方法类似)。 
例子:下面的例子显示test是否成功的提示: 
function testinput(re, str){ 
if (re.test(str)) midstring = " contains "; 
else midstring = " does not contain "; 
document.write (str + midstring + re.source); } toSource  
返回一个字符串象征对象的源码 RegExp的方法 从Javascript 1.3以上版本开始提供 语法:toSource() 
参数:没有 描述:toSource方法返回下述的值: 对于内置的RegExp对象,toSource返回下面的字符象征源码不可用: 
function Boolean(){ [native code] } 
在RegExp场合中, toSource返回象征源码的字符串,通常这个方法是由Javascript内部自动调用而不是不代码中显式调用。 
更多请看Object.toSource toString 返回描绘指定对象的字符串。

RegExp的方法 
从Javascript 1.1, NES 2.0开始提供 ECMA版本ECMA-262 语法:toString() 参数:无 
描述:RegExp对象不考虑Object对象的toString方法;它不继承Object.toString,对于RegExp 对 
象,toString方法返回一个代表该对象的字符串。 例如:下面的例子显示象征RegExp对象的字符串 
myExp = new RegExp("a+b+c"); alert(myExp.toString()) 
displays "/a+b+c/" 更多请看:Object.toString valueOf 返回一个RegExp对象的原始值

RegExp的方法 从Javascript 1.1版本开始提供 ECMA版本:ECMA-262 语法:valueOf() 
参数:无 描述:RegExp的valueOf方法以字符串形式返回RegExp对象的原始值,这个值与RegExp.toString相等。 
该方法通常由Javascript内部自动调用而不是显式调用 例子: myExp = new RegExp("a+b+c"); 
alert(myExp.valueOf()) displays "/a+b+c/" 
源:u/meil/archives/2007/325.html

(0)

相关推荐

  • 正则表达式详述 四

    以下这些不是正则表达式的新增对象请参阅对应的Javascript对象的属性 $_属性 参考input  $*属性 参考multiline  $&属性 参考lastMatch  $+属性 参考lastParen  $`属性 参考leftContext  $'属性 参考rightContext compile方法 在脚本运行期间编译正则表达式对象属于RegExp的方法 在Javascript 1.2, NES 3.0以上版本提供 语法:       regexp.compile(pattern[, 

  • Python for Informatics 第11章之正则表达式(四)

    注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.3 组合查询和抽取 如果我们想以"X-"字符串开头的行中找到数字,就像下面两行字符串: X-DSPAM-Confidence: 0.8475 X-DSPAM-Probability: 0.0000 但我们不只是要任意行中的任意浮点数,而是具备上面格式的行中的数字. 我们可以创建以下正则表达式来选择这样的行: ^X-.*: [0-9.]+ 这个表达式的含

  • 正则表达式详述 二

    下面的提供了在正则表达式中能够使用的完整对特殊字符的一个完整的列表和描述. 表1.3:正则表达式中的特殊字符: 字符\ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,\不作解释. 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠\,也就是/\b/,则该字符变成特殊字符,表示匹配一个单词的分界线. 或者:  对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释. 例如:*是一个特殊字符,匹配任意个字符(包括0个字符):例如:/a*/意味匹配0个或多个a

  • 正则表达式详述 三

    当表达式被检查的时候,文字符号提供了编辑正则表达式的方法.利用文字符号可以使到正则表达式保持为常数.例如,如果你在一个循环中使用文字符号来构造一个正则表达式,正则表达式不需进行反复编译.正则表达式对象构造器,例如,new RegExp("ab+c"),提供正则表达式的运行时编译.当你知道正则表达式的模式会变化的时候,应该使用构造函数,或者你不知道正则表达式的模式,而它们是从另外的源获得的时候,比如由用户输入时.一旦你定义好了正则表达式,该正则表达式可在任何地方使用,并且可以改变,你可以

  • 正则表达式详述第一部

    正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在Javascript1.2 版本以上提供. 下面我们看看有关正则表达式的介绍:        正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,比如是不是Email地址格式等),它具有用来检查给出的字符串是否符合规则的属性和方法.        除此之外,你用RegExp构造器建立的个别正则表达式对象的属性

  • 正则表达式regular expression详述(二)

    正则表达式详述(二) 以下这些不是正则表达式的新增对象请参阅对应的JavaScript对象的属性    $_属性    参考input    $*属性    参考multiline    $&属性    参考lastMatch    $+属性    参考lastParen    $`属性    参考leftContext    $'属性    参考rightContext     compile方法    在脚本运行期间编译正则表达式对象    属于RegExp的方法     在JavaScri

  • JS正则表达式大全(整理详细且实用)

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配&q

  • Oracle正则表达式使用介绍

    下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题. 1. REGEXP_SUBSTR REGEXP_SUBSTR 函数使用正则表达式来指定返回串的起点和终点,返回与source_string 字符集中的VARCHAR2 或CLOB 数据相同的字符串. 语法: --1.REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串 REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]]

  • Python for Informatics 第11章 正则表达式(一)

    正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 目前为止,我们一直在通读文件,查找模式和抽取字里行间我们感兴趣的各种信息.我们一

  • Python for Informatics 第11章之正则表达式(二)

    注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.1 正则表达式的字符匹配 我们可以用许多其它的特殊字符创建更加强大的正则表达式.最常用的特殊符号是可匹配任何字符的句号(".").在以下的示例中,正则表达式"F..m:"将匹配"From:","Fxxm:","F12m:",或者"F!@m:"等类似字符串

随机推荐