gpt4 book ai didi

用于数字的 Javascript 正则表达式

转载 作者:行者123 更新时间:2023-12-03 23:32:12 25 4
gpt4 key购买 nike

我正在尝试制作一个 HTML 表单,该表单接受用户通过输入字段进行的评分。评分是 0-10 之间的一个数字,我希望它最多允许两位小数。我正在尝试使用正则表达式,具有以下内容

function isRatingGood()
{
var rating = document.getElementById("rating").value;
var ratingpattern = new RegExp("^[0-9](\.[0-9][0-9]?)?$");

if(ratingpattern.test(rating))
{
alert("Rating Successfully Inputted");
return true;
}
else
{
return rating === "10" || rating === "10.0" || rating === "10.00";
}
}

但是,当我在字段中输入任何 4 位或 3 位数字时,它仍然有效。它输出警报,所以我知道它是失败的正则表达式。 5 位数字无效。我用了this previous answer作为基础,但它对我来说工作不正常。

我目前的理解是表达式的开头应该是一个数字,然后可以选择接受小数点后跟 1 或 2 位数字。

最佳答案

您正在使用字符串文字来创建正则表达式。在字符串文字中,\ 是转义字符。字符串文字

"^[0-9](\.[0-9][0-9]?)?$"

产生值(和正则表达式):

^[0-9](.[0-9][0-9]?)?$

(您可以通过在浏览器的控制台中输入字符串文字来验证这一点)

\. 不是字符串文字中的有效转义序列,因此反斜杠将被忽略。这是类似的例子:

> "foo\:bar"
"foo:bar"

所以你可以在上面看到,. 没有在正则表达式中转义,因此它保留了它的特殊含义并匹配任何字符。转义字符串文字中的反斜杠以创建文字 \:

> "^[0-9](\\.[0-9][0-9]?)?$"
"^[0-9](\.[0-9][0-9]?)?$"

或使用正则表达式:

/^[0-9](\.[0-9][0-9]?)?$/

关于用于数字的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599336/

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