JavaScript中的正则表达式
就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:
var pattern = /s$/;
代码如下
这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义一个等价的正则表达式,代码如下:
代码如下 | |
var pattern = new RegExp("s$"); |
提示和注释
重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。
提示:如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0
示例
下面的例子举例说明了 test 方法的用法:
代码如下 | |
<script language=jscript> |
例
代码如下 | |
<script type='text/javascript'> var reTest = /^aid=(.*)/ig; reTest.lastIndex = 0; alert(reTest.test(aData[i])); }
|
这样, 结果就对了~, 当然
另外, 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 |
正则表达式的直接量字符
字符 匹配
________________________________
字母数字字符 自身
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,}