RegularExpressionValidator浅析
看了Anders Liu (lover_P) 的正则表达式-趣现象一则 于是产生了我的第一篇文章:
RegularExpressionValidator本质上是由下面javascript方法验证的
function RegularExpressionValidatorEvaluateIsValid(val) {
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
var rx = new RegExp(val.validationexpression);
var matches = rx.exec(value);
return (matches != null && value == matches[0]);
}对于提到的用正则表达式 ([1-9])|([1][0-2]) 只能匹配1~9,主要是因为如value=10,11,12, 十位的1已经满足([1-9]),故matches[0]返回的都是1,从而返回 false. ([1][0-2])|([1-9])之所以可以,是因为([1][0-2])放在前面,matches[0]能正确地返回,当然改成 ^([1-9])$|^([1][0-2])$ 也是正确的.
VS2003,VS2005都是这样,暂不论MS的value == matches[0]写法,
因为好不好我们都是无法改变的,还是改变的正则表达式的写法吧 ![]()
当然能自已写脚本验证最好。能不用RegularExpressionValidator就不用,
MS VS2003的RegularExpressionValidator只能在IE中起作用,还好, VS2005中已经改正了。


浙公网安备 33010602011771号