十进制数的正则表达式,接受0到4位但没有字符

时间:2015-06-09 11:35:57

标签: javascript jquery regex

我试图设计一个正则表达式,它接受最多4位数的十进制数。 当用户在文本框中键入时,我已成功完成此操作。 现在,我正在尝试验证粘贴操作的文本框。 为此,我写了 jquery 函数

 function pasteNumber() {
        var reNumber = /\d*\.\d{0,4}/;
        var theString = window.clipboardData.getData('Text');

        if (reNumber.test(theString) == false) {
            alert("You are trying to paste an invalid Number!")
            return;
        }
        event.srcElement.value = theString
        return;
    }

我使用的正则表达式是接受类似

的值
44.aaaa

它不应该接受。 然后我尝试将正则表达式改为

/\d*\.\d{1,4}/

然后,它开始接受像

这样的值
44.1aaa

我需要帮助来编写一个接受像

这样的值的正则表达式
4.1
421.11
467.111
438904.1111
0.1

但不是

1234.a
489.a
435.aaa
412.1aaaa
1567.11a

简而言之,应该没有人物。

有什么建议吗? 谢谢

2 个答案:

答案 0 :(得分:3)

您只缺少主播^$

^\d*\.\d{0,4}$

请参阅demo

但是,为避免匹配.123.,您可以将其增强为

^\d*\.\d{1,4}$

请参阅update

As for anchors,他们

  

根本不匹配任何角色。相反,他们匹配一个位置   字符之前,之后或之间。它们可以用来锚定   正则表达式在某个位置匹配。插入符号^与位置匹配   在字符串中的第一个字符之前。将^a应用于abc个匹配项   a^b根本不匹配abc,因为b无法正确匹配   在字符串开头之后,匹配^

     

同样,$匹配字符串中的最后一个字符。 c$匹配c中的abc,而a$则不匹配。

答案 1 :(得分:1)

您只需要添加一些锚点并将整个小数部分(?:)分组,并使其?成为可选项:

^\d+(?:\.\d{1,4})?$

^用于字符串的开头,$用于字符串的结尾

请参阅demo