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

时间:2017-10-05 05:49:55

标签: angularjs regex

我必须制作一个正则表达式来替换除数字以外的文字而只有一个点 这是我的正则表达式 ::

var a = text.replace(/[^0-9,.]/g, '');

但它不会取代 dot 。我必须将替换为多个。

这是代码:

<!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>

2 个答案:

答案 0 :(得分:1)

更新2:

你可以这样做:

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

将此Link用于说明

更新1: 你可以做一些技巧..

让你的第一个。替换一些其他特殊字符

mystring =  mystring.replace(/\./,$)

这将仅将第一个点更新为$

现在将所有点更新为空白

mystring  = mystring.replace(/\./g,' ')

现在将$更新为点

mystring = mystring.replace(/\$/g,.)

答案 1 :(得分:0)

试试这个:

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, '');

不确定,这只是你想要的或别的什么。

如果是,那将有所帮助。