【问题标题】:RegEx to accept numbers less then -50.0 or greater than 80.0RegEx 接受小于 -50.0 或大于 80.0 的数字
【发布时间】:2015-03-26 02:44:07
【问题描述】:

我正在尝试找到一个 JavaScript 正则表达式来接受小于 -50.0 或大于 80.0 的数字。

下面的表达式不起作用:

 /^([-][5][0]\.[0]|[-][0-4][0-9]\.[0-9]|[-][0-9]\.[0-9])|([0]\.[0]|[1-9]\.[0-9]|[0-7][0-9]\.[0-9]|[8][0]\.[0])$/

【问题讨论】:

  • 这是 knockoutJS 验证的一部分 - params 参数采用正则表达式

标签: javascript regex


【解决方案1】:

RegEx 用于模式匹配,而不是类似的东西。只需将输入解析为数字并比较其值。

function checkValue(input){
    var number = parseInt(input);
    if (number === NaN) throw new Error('input was not a number') /* error checking */
    if (number < -50 || number > 80) return true;
   return false;
}

编辑:如果可以,您应该尝试在上游进行某种形式的验证。 RegEx 不适合这种情况。随意发布更多上下文代码,我们可以在此处了解如何最好地验证。

【讨论】:

【解决方案2】:

你可以使用这个正则表达式:

/(?:^|[^.])(-([56]\d|\d{3,})(?:\.\d{1,2})?\b|\b([89]\d|\d{3,})(?:\.\d{1,2})?\b)/gm

RegEx Demo

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 2011-01-25
  • 1970-01-01
相关资源
最近更新 更多