前端使用正则表达式进行校验将number类型转换为string类型的解决办法

2022-08-09 08:37:54

最近在使用正则表达式进行校验时,发现会将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可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。

  • 作者:Singchap Wang
  • 原文链接:https://blog.csdn.net/JinKin_OldWang/article/details/84111683
    更新时间:2022-08-09 08:37:54