我正在尝试使用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/