gpt4 book ai didi

javascript - 为什么某些有效的正则表达式不适用于 html5 模式属性?

转载 作者:行者123 更新时间:2023-11-28 00:02:07 26 4
gpt4 key购买 nike

请参阅此 fiddle :http://jsfiddle.net/5vTc7/

如果您打开控制台,您可以看到模式属性中的正则表达式 ( (?=^[0-9]*(\.[0-9]+)?$)(?=.*[1-9]) ) 按照 JS 的预期工作,但是当您在输入中输入任何内容并尝试提交时,它会失败。

如果我的正则表达式有问题,我只是想将它限制为大于 0 的数字。我想使用数字输入(即 <input type="number"/> ),但我不能,因为它不允许您设置值的格式(例如,它将 0.00000001 显示为 1e-8,这是不可取的)。

这里我是一头雾水。有什么我想念的吗?为什么这行不通?

最佳答案

当您使用带 anchor 的模式时,如 The pattern attribute 中指定的那样, Javascript 也会失败

var pattern = '^(?=^[0-9]*(\.[0-9]+)?$)(?=.*[1-9])$';
var reg = new RegExp(pattern);
console.log(reg.test('1.0')); // will fail
console.log(reg.test('0.0')); // will fail

参见修改后的 JSFiddle

如果想限制输入为非空数字,可以使用

\d*[1-9]\d*(?:\.\d*)?|\d+\.\d*[1-9]\d*

此模式要求小数点前后至少有一位非空数字。

参见 JSFiddle

关于javascript - 为什么某些有效的正则表达式不适用于 html5 模式属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com