Angularjs 当文本包含多个点时,正则表达式替换文本

Angularjs 当文本包含多个点时,正则表达式替换文本,angularjs,regex,Angularjs,Regex,我必须制作一个正则表达式,该正则表达式替换除数字以外的文本,并且只替换一个点 这是我的正则表达式: var a = text.replace(/[^0-9,.]/g, ''); 但它不能取代点。我必须替换多个点 代码如下: <!DOCTYPE html> <html> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script&g

我必须制作一个正则表达式,该正则表达式替换除数字以外的文本,并且只替换一个点 这是我的正则表达式:

var a = text.replace(/[^0-9,.]/g, '');
但它不能取代点。我必须替换多个点

代码如下:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
<input production-qty ID="test"  ng-model="testmodel" type="text"  />
</div>

<script>
var app = angular.module("myApp", []);
app.directive('productionQty', function () {
    return {
        require: 'ngModel',
        link: function (scope, element, attr, ngModelCtrl) {
            function fromUser(text) {
                var transformedInput = text.replace(/[^0-9,.]/g, '');
                //var transformedInput = text.matches(/^[0-9]+(?:\.[0-9]+)?$/g);
                  console.log(transformedInput);
                if (transformedInput !== text) {
                    ngModelCtrl.$setViewValue(transformedInput);
                    ngModelCtrl.$render();
                }
                return transformedInput;
            }
            ngModelCtrl.$parsers.push(fromUser);
        }
    };
});
app.controller("myCtrl", function($scope) {

});
</script>

</body>
</html>

var-app=angular.module(“myApp”,[]);
应用指令('productionQty',函数(){
返回{
要求:'ngModel',
链接:函数(范围、元素、属性、ngModelCtrl){
函数fromUser(文本){
var transformedInput=text.replace(/[^0-9,.]/g');
//var transformedInput=text.matches(/^[0-9]+(?:\[0-9]+)?$/g);
console.log(transformedInput);
if(transformedInput!==文本){
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
返回转换输入;
}
ngModelCtrl.$parsers.push(fromUser);
}
};
});
app.controller(“myCtrl”,函数($scope){
});
更新2:

您可以这样做:

value.replace(/[\.]/g, function(match, offset, all) { 
     return match === "." ? (all.indexOf(".") === offset ? '.' : '') : ''; 
  })
用这个来描述

更新1: 你可以耍点小把戏

让我们用其他特殊的字符替换你的第一个

mystring =  mystring.replace(/\./,$)
这将仅将第一个点更新为$

现在将所有点更新为空白

mystring  = mystring.replace(/\./g,' ')
现在将$to更新为dot

mystring = mystring.replace(/\$/g,.)
试试这个:

var text = "avnesh112.333.44.55.kaka3443", tempText, a;

var tempText = text.replace( /^([^.]*\.)(.*)$/, function ( a, b, c ) { 
    return b + c.replace( /\./g, '' );
});

a = tempText.replace(/[^0-9,.]/g, '');
不确定,这只是你想要的或者别的什么


如果是,会有帮助。

只有一个点表示第一个点?你能举例说明吗?是的,第一个@AvneshShakyaI已经用代码更新了问题@阿夫内斯哈克雅坦克斯。干得好!我用过你的简单版本。但自包含版本可用于更多定制。再次感谢@Jayanti LalWelcome Imran:)