gpt4 book ai didi

javascript - jquery/Javascript正则表达式过滤带逗号、13位int和2位小数的小数

转载 作者:行者123 更新时间:2023-12-05 06:36:21 36 4
gpt4 key购买 nike

您好,我需要输入方面的帮助。我需要制作一个正则表达式以在按键时对其进行过滤。

输入将有一个最多 13 位整数和最多 2 位小数的数字。此外,十进制数字使用逗号而不是点。

我尝试了一些正则表达式,但它们不适用于按键。

111111,11 TRUE
1111111111111 TRUE
11111111111111 FALSE
11111111111111,11 FALSE
1111111111111,11 TRUE
111,111 FALSE
1a FALSE
1.0 FALSE
1.00 FALSE
0 TRUE

我尝试了以下正则表达式,并在 regextester 网站上进行了测试。在该站点中,它部分起作用(某些情况下仍然不起作用),但在 javascript 上它不过滤。我不知道原因。

/^(\d{1,13})(\,)?(\d{1,2})$/g

这是jquery方法

$(".numericWithDecimal").on("keypress keyup blur",function (event) {
var regex = /^(\d{1,13})(\,)?(\d{1,2})$/g;

//I tried this
if(!regex.match($(this).val()))
event.preventDefault();

//or this
if (!regex.test($(this).val()))
event.preventDefault();

});

是否可以创建适用于这些情况的表达式?什么是?

[编辑] 基于@The fourth bird 正则表达式的新方法

 $(".numericWithDecimalLimit").on("keypress keyup blur",function (event) {
var regex = /^(?:\d{1,13})(?:,\d{1,2})?$/g;
var value = this.value + String.fromCharCode(event.keyCode || event.charCode);
if(!regex.test(value))
event.preventDefault();
});

最佳答案

您可以将正则表达式更新为并将逗号包含到非捕获组中并使其成为可选的:

^(\d{1,13})(?:,\d{1,2})?$

那将匹配:

  • ^ 字符串的开头
  • (\d{1,13}) 捕获一组中的 1 - 13 位数字
  • (?: 非捕获组
    • , 匹配逗号
    • \d{1,2} 匹配 1 或 2 个数字
  • )? 关闭非捕获组并使其可选
  • $ 字符串结束

对于比赛,您还可以将第一组设为非捕获组:

^(?:\d{1,13})(?:,\d{1,2})?$

关于javascript - jquery/Javascript正则表达式过滤带逗号、13位int和2位小数的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49148319/

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