Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中仅访问小数和数字的正则表达式_Javascript_Regex - Fatal编程技术网

javascript中仅访问小数和数字的正则表达式

javascript中仅访问小数和数字的正则表达式,javascript,regex,Javascript,Regex,我想做一个正则表达式,它支持下面所有的数字 数字的最大长度:7 小数点后的最大长度:2 例如: 有效:5001234567350.757500.054500.3 无效:100.123、12345678、45000.25 我试过了 但它不满足“最大长度”值 请在此问题上提供帮助。我很确定这将为您提供帮助: ^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$ 任何5.2或6.1或7位数字(最大字符数)这是一个用于模式的数字 var re = /^(\d{1,7}

我想做一个正则表达式,它支持下面所有的数字

  • 数字的最大长度:7
  • 小数点后的最大长度:2
例如:

  • 有效:5001234567350.757500.054500.3
  • 无效:100.123、12345678、45000.25
我试过了

但它不满足“最大长度”值


请在此问题上提供帮助。

我很确定这将为您提供帮助:

^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$
任何5.2或6.1或7位数字(最大字符数)

这是一个用于模式的数字

var re = /^(\d{1,7}|\d{1,6}\.\d|\d{1,5}\.\d{1,2})$/;

function validate(str) {
  return (str).match(re) !== null;
}

function assert(value, expected) {
  return value === expected;
}

console.log(
  assert(validate("1234567"), true)
);

console.log(
  assert(validate("123456.7"), true)
);

console.log(
  assert(validate("12345.67"), true)
);

console.log(
  assert(validate("1234.567"), false)
);

console.log(
  assert(validate("12345.678"), false)
);

console.log(
  assert(validate("123456.78"), false)
);

console.log(
  assert(validate("1234567.8"), false)
);

console.log(
  assert(validate("12345678"), false)
);

通过前瞻检查长度

               ↓               ↓       CHANGE THESE PARAMETERS
/^(?=(.[.]?){1,7}$)\d*([.]\d{1,2})?$/
  |---------------|                    LOOK-AHEAD TO CHECK LENGTH
                   |-|                 INTEGER PORTION OF NUMBER
                      |-----------|    OPTIONAL DECIMAL PORTION OF NUMBER

这比其他解决方案更容易扩展到各种问题,例如“最多七位数字,最多四位小数”。只需替换“更改这些参数”所指的两个字符。

/^(\d{1,7}\d{1,5}\.\d{1,4}\.\d{1,2}$/
7是否包含2个12位,还是7+2?“45000.25”不应在有效示例中?hi webduvet,7包含小数点Shi Jaromanda,您能告诉我最大长度10和最大小数点6的情况吗。THX您是否可以扩展此方法以处理最大小数位数为10的情况(最大总长度更大,如15)?不,我的
re
不能像这样扩展。我不熟悉你的“前瞻性”方法。但我想成为。我尝试了我的模式,但第二次和第三次测试都失败了。我不知道如何修改表达式来修复它。对不起,我误解了OPs的注释7包含小数点,意思是包含小数点。我已经更新了我的答案。酷,你更新的表情满足了我的要求。你的表达式具有可伸缩性的优点。mattgreen的表达式也适用于。但它是可伸缩的吗?它接受5个整数[ex:12345.78]。在这种情况下,长度变成了8。我对问题陈述的理解是,7的最大长度适用于数字,而不是小数点本身。所以在这个解释中,12345.78应该被接受,因为总位数是7。很抱歉,我提到了“45000.25”,这是“无效的”。最大数字7表示数字的总长度,包括“.”嗨,torazburo,我斯莱格尔蒂修改了你们的答案,效果很好/^(?=(.?){1,7}$)\d*([.]\d{1,2})$/