我正在尝试使用Javascript为React应用程序创建一个正则表达式,该正则表达式允许使用正负十进制数字,并且不允许输入任何字符。

我一直在寻找例子,阅读文档,但我不知道该怎么做。

这是必须要做的事情:

允许使用正负十进制数字,我发现了这一点:

var re = new RegExp("^[+-]?[0-9]{0,900}(?:\.[0-9]{0,900})?$");


但我可以写一个字符,然后向我显示真实,然后添加其他字符,然后向我显示错误。 console.log(re.test(value));

如果为十进制且以零开头,则显示零(0.232),并且不允许此值(.232)

不允许写字符,我已经看过这个/^\d*$/

最佳答案

查看有关RegExp的文档,它指出,使用构造函数时,必须使用常规的字符串转义规则(当包含在字符串中时,在特殊字符前面加上\)。

然后,您的正则表达式将匹配一个点,该点将匹配使例如a有效的任何字符,因为前面的[0-9]{0,900}匹配零-900次。

您的正则表达式将变为:

var re = new RegExp("^[+-]?[0-9]{0,900}(?:\\.[0-9]{0,900})?$");


要匹配不应以点开头的负和正十进制数字,可以使用:

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

它将匹配字符串^的开头,可选的[+-]?,一个或多个数字[0-9]+,后跟可选的部分,该部分将匹配点和一个或多个数字(?:\.[0-9]+)?,然后匹配字符串的末尾$

var re = new RegExp("^-?[0-9]+(?:\\.[0-9]+)?$");




var re = new RegExp("^[+-]?[0-9]+(?:\\.[0-9]+)?$");
var strings = [
  "1",
  "1.2",
  "0.232",
  ".232",
  "-1.2",
  "+1.2"

];

strings.forEach((s) => {
  console.log(s + " ==> " + re.test(s));
});

关于javascript - 正负十进制数的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50149698/

10-12 12:36
查看更多