【问题标题】:how to validate texbox with plus minus valus angular js如何使用加减值angularjs验证文本框
【发布时间】:2017-09-23 06:57:12
【问题描述】:

我需要在文本框中输入正负值。我使用 Angular js 进行了以下验证。 但是当用户输入零时,用户可以输入它而不需要加号或减号。 在我的解决方案中,用户不能在没有加号或减号的情况下输入零。 如何允许输入没有加号或减号的零。

<input name="temperature" type="text" class="form-control" ng-maxlength="3"
 ng-model="eletctyDetail.temperatureValue" ng-required="true" 
 ng-pattern="/^[-+]\d+(\.\d+)?$/" ng-pattern-err-type="tempPattern" />

【问题讨论】:

  • 您为什么接受一个不起作用的解决方案?看,如果您不想让用户在前面输入+-0,请使用/^(0|[+-][1-9])\d*(\.\d+)?$/

标签: javascript angularjs regex validation


【解决方案1】:

您的模式 - /^[-+]\d+(\.\d+)?$/ - 必须在起始位置匹配 -+。然后,\d+ 匹配 any 一位或多位数字。

现在,您只需匹配0+/- 后跟从19 范围内的任何数字。这就是你需要使用交替的地方:(0|[-+][1-9])

整个正则表达式看起来像

ng-pattern="/^(0|[+-][1-9])\d*(\.\d+)?$/"

请参阅regex demo

如果您需要使- / + 可选使用

ng-pattern="/^(0|[+-]?[1-9])\d*(\.\d+)?$/"
                     ^

模式详情

  • ^ - 字符串开头
  • (0|[+-][1-9]) - 0+/- 后跟从 19 范围的数字(因此,-+ 仅在 1-9 前面是强制性的)(注意:如果您使用 [-+]?,加号或减号将变为可选,因为 ? 匹配 1 或 0 次)
  • \d*(\.\d+)? - 0+ 个数字(请注意,您的模式中的 + 变为 *,因为第一个数字已被交替组使用),后跟 . + 1 个或多个数字的可选序列
  • $ - 字符串结束。

【讨论】:

  • 由于拼写错误,我稍微修改了解释。请参阅“所以,-+ 仅在 1-9 前面是必需的)(注意:如果您使用 [-+]?,加号或减号将变为可选,因为 ? 匹配 1 或 0 次出现)"
【解决方案2】:

这个呢

<input name="temperature" type="text" class="form-control" ng-maxlength="3"
 ng-model="eletctyDetail.temperatureValue" ng-required="true" 
 ng-pattern="^[-+]?[0-9]*\.?[0-9]+$" ng-pattern-err-type="tempPattern" />

Check this fiddle

【讨论】:

  • 很高兴它帮助了你。
  • 数字必须用加号或减号输入。但是零可以不带 +,- 输入。先生,你能帮帮我吗?
  • 我的 ng 模式没问题。但问题是,用户不能在没有 +,- 符号的情况下输入“0”。
  • jsfiddle.net/Azanka/pm1xv93s/1 请检查。当用户输入“0”时,它必须为真。 (0 应该允许没有 + 或 -)。谢谢
  • 使用 /^[-+]\d+(\.\d+)?$|^0/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多