当表达式被检查的时候,文字符号提供了编辑
正则表达式的方法。利用文字符号可以使到
正则表达式保持为常数。例如,如果你在一个循环中使用文字符号来构造一个
正则表达式,
正则表达式不需进行反复编译。
正则表达式对象构造器,例如,new RegExp("ab+c"),提供
正则表达式的运行时编译。当你知道
正则表达式的模式会变化的时候,应该使用构造函数,或者你不知道
正则表达式的模式,而它们是从另外的源获得的时候,比如由用户输入时。一旦你定义好了
正则表达式,该
正则表达式可在任何地方使用,并且可以改变,你可以使用编译方法来编译一个新的
正则表达式以便重新使用。
一个分离预先定义的RegExp对象可以在每个窗口中使用;也就是说,每个分离的Javascript线程运行以获得自己的RegExp对象。因为每个脚本在一个线程中是不可中断的,这就确保了不同的脚本不会覆盖RegExp对象的值。预定义的RegExp对象包含的静态属性:input, multiline, lastMatch,lastParen, leftContext,rightContext, 以及从$1到$9。input和multiline属性能被预设。其它静态属性的值是在执行个别
正则 表达式对象的exec和test方法后,且在执行字符串的match和replace方法后设置的。
属性
注意RegExp对象的几个属性既有长名字又有短名字(象Perl)。这些名字都是指向相同的值。Perl是一种编程语言,而Javascript模仿了它的
正则表达式。
属性$1, ..., $9
取得匹配的子串,如果有的话
属性$_
参考input
属性$*
参考multiline
属性$&
参考lastMatch
属性$+
参考lastParen
属性$`
参考leftContext
属性$'
参考rightContext
属性constructor
指定用来建立对象原型函
属性global
决定是否测试
正则表达式是否不能匹配所有的字符串,或者只是与最先的冲突。
属性ignoreCase
决定试图匹配字符串的时候是否忽略大小写
属性input
当
正则表达式被匹配的时候,为相反的字符串。
属性lastIndex
决定下一次匹配从那里开始
属性lastMatch
最后一个匹配的字符
属性lastParen
子串匹配的时候,最后一个parenthesized,如果有的话。
属性leftContext
最近一次匹配前的子串。
属性multiline
是否在串的多行中搜索。
属性prototype
允许附加属性到所有的对象
属性rightContext
最近一次匹配后的的子串。
属性source
模式文本
方法
compile方法
编译一个
正则表达式对象
exec方法
运行
正则表达式匹配
test方法
测试
正则达式匹配
toSource方法
返回一个对象的文字描述指定的对象;你可以使用这个值来建立一个新的对象。不考虑Object.toSource方法。
toString方法
返回一个字符串描述指定的对象,不考虑Object.toString对象。
valueOf方法
返回指定对角的原始值。不考虑Object.valueOf方法。
另外,这个对象继承了对象的watch和unwatch方法
例子:
例1、下述示例脚本使用replace方法来转换串中的单词。在替换的文本中,脚本使用全局 RegExp对象的$1和$2属性的值。注意,在作为第二个参数传递给replace方法的时候,RegExp对象的$属性的名
称。
<script LANGUAGE="Javascript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1");
document.write(newstr)
</script>
显示结果:"Smith, John".
例2、下述示例脚本中,RegExp.input由Change事件处理句柄设置。在getInfo函数中,exec 方法使用RegExp.input的值作为它的参数,注意RegExp预置了$属性。
<script LANGUAGE="Javascript1.2">
function getInfo(abc)
{
re = /(\w+)\s(\d+)/;
re.exec(abc.value);
window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</script>
请输入你的姓和年龄,输入完后按回车键。
<FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM>
</HTML>
$1, ..., $9属性
用圆括号括着的匹配子串,如果有的话。
是RegExp的属性
静态,只读
在Javascript 1.2, NES 3.0以上版本提供
描述:因为input是静态属性,不是个别
正则表达式对象的属性。你可以使用RegExp.input 访问该属性。
能加上圆括号的子串的数量不受限制,但
正则表达式对象只能保留最后9 条。如果你要访问所有的圆括号内的匹配字串,你可以使用返回的数组。
这些属性能用在RegExp.replace方法替换后的字符串(输出结果)。当使用这种方式的时候,不用预先考虑RegExp对象。下面给出例子。当
正则表达式中没有包含圆括号的时候,该脚本解释成$n的字面意
义。(这里的n是一个正整数)。
例如:
下例脚本使用replace 方法来交换串中单词的位置。在替换后的文本字串中,脚本使用
正则表达式RegExp对象的$1和$2属性的值。注意:当它们向replace方法传递参数的时候,这里没有考虑 $ 属性的
RegExp对象的名称。
<script LANGUAGE="Javascript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1");
document.write(newstr)
</script>
显示的输出结果为:Smith, John。
u/meil/archives/2007/324.html
文章评论
共有 位脚本之家网友发表了评论我来说两句