最近在使用正则表达式进行校验时,发现会将number类型转换为string类型.导致页面达不到想要的效果.
经过一番思考,原来是正则表达式起的作用,先来看看正则表达式的作用:
1) 用于字符串的查找(找文件名,在文件内部找内容)
2) 判断字符串与正则表达式是否匹配,用于表单验证。
客官先看以下代码(已解决好的)
/** 定义购买数量操作方法 */
$scope.addNum = function (number) {
$scope.num=parseInt($scope.num);
$scope.num+=number;
if ( $scope.num< 1){
$scope.num = 1;
}
};
// 监控num变量
$scope.$watch("num",function (newValue, OldValue) {
if (newValue){
if (newValue < 1 || !/[^/d]/g.test(newValue)){
$scope.num = 1;
}
}
});
解析说明:
如果使用 !/[^/d]/g.test(newValue) 则会将newValue转换为String类型,这就跟之前页面传递过来的number类型不一致.
这样的话,就必须要对数据类型进行转换, 如: $scope.num=parseInt($scope.num); 加上这句代码后,问题就解决了.
说明 : 正则表达式中的g
/g意思就是:global可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。