javascript - 只有一个点 "."正则表达式

标签 javascript regex angularjs

我需要能够设置一个输入,以便仅输入数字和一个点,例如 111.111 而不是 111..110....1111.11.11.11

这是因为我正在进行计算,如果用户在同一输入中输入多个点,那么计算就会停止,我在指令中有这个

.directive('numbersOnly', function () {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function (scope, element, attrs, ngModelCtrl) {
      ngModelCtrl.$parsers.push(function (inputValue) {
        var transformedInput = inputValue.replace(/[^0-9\.]+/g, '');
        if (transformedInput !== inputValue) {
          ngModelCtrl.$setViewValue(transformedInput);
          ngModelCtrl.$render();
        }
        return transformedInput;
      });
    }
  }
})

那么我应该在这里做什么

var transformedInput = inputValue.replace(/[^0-9\.]+/g, '');

更新

这是我尝试使用它的代码:https://jsfiddle.net/dado1ynj/4/

最佳答案

使用前瞻:

^(?!.*\..*\.)(\d+\.\d+)

Demo

或 anchor :

^(\d+\.\d+)$

Demo2

关于javascript - 只有一个点 "."正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062341/

相关文章:

javascript - Angular 模块和依赖注入(inject)

javascript - 为什么这个 Javascript/HTML5 Canvas 不起作用?

javascript - 无法使用括号中的变量从 JavaScript 数组获取值

python - 如何处理混合大小写正则表达式?

javascript - AngularJS:在 View 内输入未绑定(bind)到预期范围

asp.net-mvc - 减少 AngularJS 提供程序中的依赖关系

javascript - 如何检查对象是否存在并具有 X 属性?

javascript - 选择选项时更改输入的占位符

php - PHP 中的多个正则表达式

正则表达式:匹配单词的第一次出现