我正在尝试设置一种方法来防止JavaScript中的某些字段输入。我的大多数字段都根据/^d*$/.test(value)
进行检查,这将防止任何输入被键入或显示为非数字。
一个特定的字段使用/^[d.]*$/.test(value)
,它允许放置任意数量的数字和小数。
我的问题是,十进制正则表达式允许输入任何数字,特别是小数的组合。我正试图阻止诸如"…."、"13.24..36"、"2.2."等的输入。
有人能提供一个正则表达式吗?它必须以数字开头,以数字结尾,可以有小数,也可以没有小数,并防止两个小数放在一起?(如..<-除非后面跟着另一个数字,否则阻止第二个(
d+(?:.?d+)?
匹配一个或多个数字,以及可选的一组点和多个数字
这仍然允许像.2这样的匹配,但您可以检查数字前面是否没有点:(?<!.)
,后面是否有点:(?!.)
然后,完整的模式变为(?<!.)d+(?:.?d+)?(?!.)
。请记住,并不是所有JavaScript环境都支持反向查找(?<!...)
。(目前Node.js和Chrome都支持(。