我需要在数字输入字段中验证科学记数法格式的数字。
为了做到这一点,我在angular.js文件(行:18652 v0.13)中替换了以下常量:var NUMBER_REGEXP = /^s*(-|+)?(d+|(d*(.d*)))([eE]+[-]?d+)?s*$/;
//var NUMBER_REGEXP = /^s*(-|+)?(d+|(d*(.d*)))s*$/;
现在,像0.045e-10这样的值在"number"类型的输入中被接受为数字。
我希望从我的应用程序而不是从angular.js文件中这样做,以便不必记住在更新框架文件时再次更改。
我试图简单地覆盖在我的主应用程序控制器的第一行,如:
NUMBER_REGEXP = /^s*(-|+)?(d+|(d*(.d*)))([eE]+[-]?d+)?s*$/;
但不工作
如何做到这一点?
在您希望接受这种格式的输入上创建您自己的验证。您可以创建包含正则表达式的自己的常量。
module.constant('SCIENTIFIC_NOTATION_NUM_REGEX', /^s*(-|+)?(d+|(d*(.d*)))([eE]+[-]?d+)?s*$/);
然后将它注入到任何你想要使用它的控制器或指令中,并在模板中使用它。
<input name="scientificNotationNum" ng-pattern="ctrl.SCIENTIFIC_NOTATION_NUM_REGEX">
这个例子反映了在视图上使用controllera将常量绑定到控制器实例的情况。另一种可能是将其绑定到$作用域。或者你可以创建自己的自定义输入验证,以便在整个应用程序中重用。