【发布时间】:2014-08-07 15:19:57
【问题描述】:
我有一个输入字段,我想在进一步传递值之前验证它的内容。不过,我正在努力创建一个正确的正则表达式,因为在在线编辑器中创建的正则表达式并不能真正适用于我的代码(实际上它会阻止所有内容)。
所需的正则表达式行为:
只有数字和.,你只能使用一次.作为小数分隔符,值不能以.开始/结束,值不能以0开头。
我的代码:
var valueInput = $(row).find("#value").val();
var numbers = /^[0-9.]*$/;
if( !valueInput.match(numbers) ) {
//do something
}
valueInput 很好,它正确地从输入中获取值。有任何想法吗?
编辑。
感谢您的贡献,我想为未来的人总结一下,寻找答案:
1。正则表达式不是字符串!我编辑了以前的代码,以确保没有人感到困惑,但删除“”的注释至关重要,感谢 Pointy。
2。我决定使用的正则表达式是/^([1-9][0-9]*)+(?:\.\d+)?$/。我意识到我还需要处理大小写,当 value 只有小数部分时,所以它以 0 开头。我真的不想在这里玩正则表达式,所以我做了一个技巧:如果 valueInput 以非零开头,我验证用 ,否则我用/^[0]{1,1}\.\d{1,2}$/g 验证。
【问题讨论】:
-
你能试试
parseFloat(valueInput) !== parseFloat(valueInput)(测试NaN)吗?或者更好的是,使用<input type="number" />,它将自动为您验证。 -
您创建的正则表达式不正确。外部双引号字符错误;它应该只是
/^[0-9]*$/。 -
@Pointy 你说得对,谢谢!
标签: javascript regex