我必须制作一个正则表达式来替换除数字以外的文字而只有一个点 这是我的正则表达式 ::
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 :(得分: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, '');
不确定,这只是你想要的或别的什么。
如果是,那将有所帮助。