Javascript 接受正数和负数的正则表达式
我需要一个正则表达式来帮助我接受正数和负数 我使用了Javascript 接受正数和负数的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一个正则表达式来帮助我接受正数和负数 我使用了^-?\d*(.\d+)$表达式 validateNegativeNumber(e: any) { let input = String.fromCharCode(e.charCode); const reg = /^-?\d*(.\d+)?$/; if (!reg.test(input)) { e.preventDefault(); } } Expecte
^-?\d*(.\d+)$
表达式
validateNegativeNumber(e: any) {
let input = String.fromCharCode(e.charCode);
const reg = /^-?\d*(.\d+)?$/;
if (!reg.test(input)) {
e.preventDefault();
}
}
Expected result: 5, +5, -5, 0
Unexpected results: 1.5, -1.5, 5++++, ++5, ---5, 5--, 50--6
您没有检查
+
符号。此外,不需要捕获组
使用以下命令:
^[+-]?\d+$
+
或-
符号const reg=/^[+-]?\d*(\.\d+)?$/;
常数valids=['+5'、'-5'、'-5'、'-5'、'-0.6'、'.55'、'-555.124'];
常量无效=['-5','5+','5-'];
log(“valids数组测试”);
valids.forEach(有效=>{
控制台日志(注册测试(有效));
});
console.log(“测试无效数组”);
invalids.forEach(无效=>{
控制台日志(注册测试(无效));
});
您可以在HTML中使用输入
标记的模式
属性,如下所示:
说明:pattern
属性可用,与其调用验证输入的函数,不如使用它。那将是一项额外的工作
我希望它能帮上忙。使用这个,接受正数或负数
^-?[0-9]\d*(\.\d+)?$
^[+-]?\d+(?:\。\d+)$
说明:
^
匹配字符串的开头(因此“abc212”将不会验证)
[+-]?
允许的第一个字符是+o-匹配0或1次出现(即?
)。请注意,如果您不想使用+
符号,您可以只写-?
,这样正则表达式将验证匹配的0或1个-
作为第一个字符
\d+
之后,您可以有任意数量的数字(至少一位,因为我们使用的是+
)
(?:\.\d+)
最后,我们可以有0或1个点(\.
)的出现(由?
给出),后跟任意数量的数字(\d+
)。请注意,组开头的?:
表示这是一个“非捕获组”)
$
匹配字符串的结尾(因此“231aaa”将不会验证)这与我的答案有什么不同?我提供了一些测试数据来证明正则表达式工作正常?你为什么要费心评论?我们有相同的方法吗?你认为我只是复制了你的正则表达式吗?在你修改正则表达式之前,我们有同样的方法。这就是我评论的时候。只要你能提供其他几种解决问题的方法,这是受欢迎的。我没有过度反应。我只是问这两个答案之间是否有什么不同,因为我很可能一开始就没有抓住差异。这是一个尽可能礼貌的问题。它将匹配+
或-
而且即使后面没有数字,我想你一定是在使用\d+
而不是\d*
,我建议你补充一些解释,为什么OP的代码不起作用,为什么你的代码会起作用,这将有助于他们学习新事物,而不仅仅是怀疑它是神奇的,无论如何+1