龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JavaScript中的正则表达式

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象. 就像字符串直接量被
在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象.

就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:

 代码如下

var pattern = /s$/;

 

  这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义一个等价的正则表达式,代码如下:

 代码如下

var pattern = new RegExp("s$");


提示和注释

重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。

提示:如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0


示例

下面的例子举例说明了 test 方法的用法:

 代码如下

<script language=jscript>
function TestDemo(){
 try{            
var re="abc" 
 var s=/a/          
//这里设正则表达式  
alert(s.test(re)) //如果包含则返回真
}catch(e){alert("err")}
}
TestDemo()
</script>

 代码如下

<script type='text/javascript'>

var reTest = /^aid=(.*)/ig;
var aData = [ 'aid=^$', 'aid=^$', 'aid=^$', 'aid=^$' ];
for (var i=0, l=aData.length; i<l; i++) {

        reTest.lastIndex = 0;

     alert(reTest.test(aData[i]));

}
</script>

 

这样, 结果就对了~, 当然

另外, moxie同学说的方法其实更有效, 既然你不需要g, 那何必设置g呢?

 代码如下

<script type='text/javascript'>

var reTest = /^aid=(.*)/i;

 

var aData = [ 'aid=^$', 'aid=^$', 'aid=^$', 'aid=^$' ];

 

for (var i=0, l=aData.length; i<l; i++) {

     alert(reTest.test(aData[i]));

}

</script>< li>

实例

 代码如下

 //test方法,测试字符串,符合模式时返回true,否则返回false
 var re = /he/;//最简单的正则表达式,将匹配he这个单词
 var str = "he";
 alert(re.test(str));//true
 str = "we";
 alert(re.test(str));//false
 str = "HE";
 alert(re.test(str));//false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case-insensitive的表示)
 re = /he/i;
 alert(re.test(str));//true
 str = "Certainly!He loves her!";
 alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用^和$
 re = /^he/i;//脱字符(^)代表字符开始位置
 alert(re.test(str));//false,因为he不在str最开始
 str = "He is a good boy!";
 alert(re.test(str));//true,He是字符开始位置,还需要使用$
 re = /^he$/i;//$表示字符结束位置
 alert(re.test(str));//false
 str = "He";
 alert(re.test(str));//true
 //当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用==或indexOf
 re = /s/;// s匹配任何空白字符,包括空格、制表符、换页符等等
 str= "user Name";//用户名包含空格
 alert(re.test(str));//true
 str = "user  Name";//用户名包含制表符
 alert(re.test(str));//true
 re=/^[a-z]/i;//[]匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写
 str="variableName";//变量名必须以字母开头
 alert(re.test(str));//true
 str="123abc";
 alert(re.test(str));//false

正则表达式的直接量字符

字符 匹配
________________________________
字母数字字符 自身
f 换页符
n 换行符
r 回车
t 制表符
v 垂直制表符
/ 一个 / 直接量
一个 直接量
. 一个 . 直接量
* 一个 * 直接量
+ 一个 + 直接量
? 一个 ? 直接量
| 一个 | 直接量
( 一个 ( 直接量
) 一个 ) 直接量
[ 一个 [ 直接量
] 一个 ] 直接量
{ 一个 { 直接量
} 一个 } 直接量
XXX 由十进制数 XXX 指 定的ASCII码字符
Xnn 由十六进制数 nn 指定的ASCII码字符
cX 控制字符^X. 例如, cI等价于 t, cJ等价于 n
字符 匹配
____________________________________________________
[...] 位于括号之内的任意字符
[^...] 不在括号之中的任意字符
. 除了换行符之外的任意字符,等价于[^n]
w 任何单字字符, 等价于[a-zA-Z0-9]
W 任何非单字字符,等价于[^a-zA-Z0-9]
s 任何空白符,等价于[ t n r f v]
S 任何非空白符,等价于[^ t n r f v]
d 任何数字,等价于[0-9]
D 除了数字之外的任何字符,等价于[^0-9]
[b] 一个退格直接量(特例)

字符 含义
__________________________________________________________________
{n, m} 匹配前一项至少n次,但是不能超过m次
{n, } 匹配前一项n次,或者多次
{n} 匹配前一项恰好n次
? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1}
+ 匹配前一项1次或多次,等价于{1,}
* 匹配前一项0次或多次.等价于{0,}


精彩图集

赞助商链接