javascript - 我的正则表达式的某些部分不起作用

标签 javascript jquery regex

我正在尝试使用正则表达式来验证文本框上的输入

表达式应该只允许数字,最多两位小数,数字前最多一个​​逗号 (,) 和一个减号(可选)。

有效:

  • 0,25
  • 10,2
  • -7000
  • -175,33
  • 15555555555555,99

无效:

  • 9,999
  • 15.03
  • 77,77,77
  • 等等

我正在使用 ^[-+]?[\d ]+(,\d{0,2})?$ 在 Jquery 代码中使用正则表达式来防止用户输入无效数字(event.preventDefault()):

    $("input[name*='TB_mytbx']").on('keypress', function (event) {
        var regex = new RegExp("^[-+]?[\d ]+(,\d{0,2})?$", "g");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
    });

似乎只有一部分正则表达式有效。

它适用于数字(它不允许我输入字母)但它也不允许逗号 (,) 和减号 (-)。

我做错了什么?

编辑

在我使用之前:

    if (focused.val().indexOf(',') != -1) {
    var number = (focused.val().split(','));
    if (number[1] && number[1].length >= 2) {
        event.preventDefault();
        return;
    }

但这会产生烦人的行为。一旦您输入了两位数的数字,您就无法再进行编辑。例如:您不能将 200,50 更改为 300,50 或 100 300,50。 (你明白了)。我希望正则表达式可以以某种方式改变它。

最佳答案

我认为您将正则表达式过度复杂化了。这应该足够了:

^-?\d+(,\d\d)?$
  • ^ 行首,
  • -? 可选减号,
  • \d+ 后面跟着一串数字,
  • (,\d\d)? 后跟一个逗号和2个数字,这3个都是可选的。
    (可选:(,\d{2})?)
  • $ 行尾。

var regex = /^-?\d+(,\d\d)?$/;

console.log(regex.test('0,25'));
console.log(regex.test('-175,33'));
console.log(regex.test('15555555555555,99'));

console.log(regex.test('9,999'));
console.log(regex.test('15.03'));
console.log(regex.test('77,77,77'));

你有一个正则表达式来验证输入值。
现在,该代码块可以替换为:

$("input[name*='TB_mytbx']").on('keypress', function (event) {
    var regex = /^-?\d+(,\d\d)?$/;
    var value = $(this).val();  // Use the field's value, instead of the pressed key.

    if (!regex.test(value)) {
        event.preventDefault();
        return false;
    }
});

关于javascript - 我的正则表达式的某些部分不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43980997/

相关文章:

split函数调用中的Java正则表达式表达式问题

java - 字符串中的多个正则表达式匹配

javascript - webpack-dev-middleware 不会将输出编译到文件夹中

javascript - 用 null 拆分函数参数?

javascript - 在wordpress中x秒后隐藏div

javascript - 如何将图像放入我的滚动文本js中

javascript - anonym.to 如何工作?

javascript - 将光标对齐到占位符起始位置

javascript - AttachEvent 在 Chrome 浏览器中不适用于焦点事件

javascript - 使用 document.referrer 获取父 URL