2017-10-05 64 views
1

我必須做出正則表達式是替換除了數字文字和只有一個點 這裏是我的正則表達式::正則表達式替換文本時,文本包含多個點

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> 
+0

只有一個點意味着第一個?你能用例子來解釋嗎? –

+0

是的第一個@AvneshShakya –

+0

我已經用代碼更新了這個問題。 @AvneshShakya –

回答

1

更新2:

,你可以這樣做:

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

使用這種Link用於描述

更新1: 你可以做一些伎倆..

讓您更換。隨着第一其它一些特殊字符

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

這將更新僅第一個點到$

現在更新所有的點空白

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

現在更新$ to dot

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

謝謝。做得好!我已經使用你的簡單版本。但獨立版本可用於更多定製。再次感謝@Jayanti Lal –

+0

歡迎Imran .. :) –

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

不確定,這只是你想要的或別的東西。

如果是的話,這將有所幫助。

+0

謝謝@Avnesh Shakya,我已經找到了我的答案。 –