验证控件-还有哪些输入值不会被验证

本文详细解析了ValidatorTrim函数的工作原理及其在输入验证中的作用。文章深入探讨了该函数如何去除字符串两端特定字符(如换页符、换行符等)的过程,并揭示了即使经过处理后字符串长度为零也会被视为验证通过的现象。
摘要由CSDN通过智能技术生成

前面提到零长度字符串的输入值不会被验证,而当作验证通过处理,那么除了零长度字符串,还有哪些输入值不会被验证呢?

查看服务器生成的 JS 代码,可以发现在验证之前都要进行如下处理:

function ValidatorTrim(s) {
    var m = s.match(/^/s*(/S+(/s+/S+)*)/s*$/);
    return (m == null) ? "" : m[1];
}

这段代码在互联网上的解释就是除去字符串两端的空格,这种说法大致是正确的,但更准确的说法是:除去字符串两端的换页符、换行符、回车符、制表符(Tab 制表符)、垂直制表符、英文空格。

再查看验证过程,可以发现:

    if (ValidatorTrim(value).length == 0)
        return true;

也就是说按 ValidatorTrim 处理后,如果字符串为零长度,就会直接返回验证通过。但是,这里长度判断通过后,进一步验证(比如正则表达式验证)使用的字符串是输入的原样字符串,不是“掐头去尾”的。


说到这里顺便解释一下上面的正则表达式。

match 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。

正则表达式 /^/s*(/S+(/s+/S+)*)/s*$/ 中:

  • / 是 JS 中正则表达式限定符。
  • ^ 是字符串开始。
  • $ 是字符串结尾。
  • /s 是空格符、制表符、换行符等。
  • /S 是非空格符、制表符、换行符等。
  • * 是匹配前一个字符零次及以上。
  • + 是匹配前一个字符一次及以上。
  • () 是一个子表达式。

由于没有指定全局查找 g,并且 () 的优先级很高(仅位于转义符之后),所以返回的数组的第一元素是整个字符串,第二个元素是匹配 (/S+(/s+/S+)*) 的部分,也就是上面说的效果。



Read more: http://www.cftea.com/c/2007/11/04FXPHZL54CPBENV.asp#ixzz0ESCgWy22&B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值