繁体   English   中英

十进制数字的正则表达式,可接受0到4位数字,但不包含字符

[英]Regular expression for decimal number accepting 0 to 4 digits but no characters

我正在尝试设计一个正则表达式,它将接受最多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

简而言之,不应有字符。

有什么建议吗? 谢谢

您只缺少锚点^$

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

观看演示

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

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

参见更新

至于锚 ,他们

完全不匹配任何字符。 而是,它们匹配字符之前,之后或之间的位置。 它们可用于将正则表达式匹配锚定在特定位置。 插入符^匹配字符串中第一个字符之前的位置。 应用^aabc匹配a ^babc根本不匹配,因为b不能在字符串开头之后立即匹配,并由^匹配。

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

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

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

^是字符串的开头, $是字符串的结尾

观看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM