Actually,simplicity is not simple

JS中创建RegExp时偷懒可是要受折磨的

我以前做JS的匹配时总是这样使用:

[javascript]
// 比如下面对数字进行匹配的语句
function email(value){
return /^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/ig.test(value);
}

而不是:

[javascript]
// 比如下面对email进行匹配的
function email(value){
var reg=new RegExp(“^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$”, ‘ig’);
return reg.test(value);
}

这样写,一般下好像没什么问题,但今天我遇到个“很有意思”的问题:在多次刷新看返回结果后,发现结果总是在true、false之间轮回。

如何导致的我到现在也没弄明白,但解决的办法就是像上面那样先用new RgExp创建正则对象,这样返回的结果就没有问题了。可点Demo查看例子(注意,例子中只有email是有问题的!要看到“特效”,你得先在email处写上个正确的 ^ _^////)

日志信息 »

该日志于2010-01-29 00:36由 asins 发表在Develop分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过评论 RSS订阅这个日志的所有评论。

相关日志 »

1 条评论

  1. uedsky uedsky March 27th, 2011 at 12:00 pm

    去掉g参数就行了,

发表评论 »

captcha
请输入验证码