在JavaScript中,正则表达式有两个对象。一个是正则表达式对象(regular expression object),另一个是全局RegExp对象(global RegExp object)。
正则表达式对象需要创建,var reg=/\.(jpg|gif|png)$/i; 。它的属性只有五个,分别是lastIndex、source、multiline、ignoreCase、global。而全局RegExp对象不需要创建,它的属性有input(opera无)、index(ie专有)、lastIndex(ie专有)、lastMatch(opera无)、lastParen(opera无)、leftContext、rightContext、multiline(firefox专有)和$1-$9。
正则表达式对象的属性只包含一个正则表达式的信息,而全局 RegExp 对象的属性包含了不断更新的每一个匹配出现的信息。
举个例子如下:
<script type="text/javascript" language="javascript">
var name1="gaoxiang";
var name2="gx123";

var reg1=/^[a-zA-Z][a-z]*[0-9]*$/;
var reg2=/^[a-zA-Z][a-z]*[0-9]*$/;

if(reg1.test(name1)){
document.write(name1+"是合法的!");
}else{
document.write(name1+"是非法的!");
}
document.write('<br />');
document.write(reg1.lastIndex);
document.write(reg2.lastIndex);
document.write(RegExp.lastIndex);
document.write(getRegExpProperties());
document.write('<br />');

if(reg2.test(name2)){
document.write(name2+"是合法的!");
}else{
document.write(name2+"是非法的!");
}
document.write('<br />');
document.write(reg1.lastIndex);
document.write(reg2.lastIndex);
document.write(RegExp.lastIndex);
document.write(getRegExpProperties());
document.write('<br />');


function getRegExpProperties(){
var str = "";
if(document.all && window.ActiveXObject){
var keys = ["input","index","lastIndex","lastMatch","lastParen","leftContext","rightContext","$1","$2","$3","$4","$5","$6","$7","$8","$9"];
var key;
for(var i=0; key=keys[i]; i++){
str += key + ": " + RegExp[key] + "\n";
}
}
else{
for(var key in RegExp){
str += key + ": " + RegExp[key] + "\n";
}
}
return str;
}
</script>

第一次匹配后的结果是:808
第二次匹配后的结果是:855