我正在尝试使用正则表达式验证表单,条件是:
我已经使用HTML5-Patterns使用它了:
pattern='\d+(,\d{1,3})?'
由于IE9不支持模式,我尝试使用js:
var numPattern = /\d+(,\d{1,3})?/;
if(!numPattern.test(menge.val()))
{
checkvalidate = false;
}
我哪里出错了?
实例 有效期:1,234; 2,00; 5; 0,1 无效:1,2345; 2.00; 56A
答案 0 :(得分:2)
您需要使用^
启动正则表达式并以$
结束,以确保整个输入字符串/行匹配。
/^\d+(,\d{1,3})?$/
这是"演示"其中所有示例都有效/无效:
https://regex101.com/r/oP5yJ4/1
(使用regex101.com调试正则表达式模式通常非常有用)
请注意:(没有^
和$
)
var pattern_without = /\d+(,\d{1,3})?/;
pattern_without.test("56a") === true; // matches, but only "56"
pattern_without.test("1,2345") === true; // matches, but only "1,234"
但是:( ^
和$
)
var pattern_with = /^\d+(,\d{1,3})?$/;
pattern_with.test("56a") === false; // no match
pattern_with.test("1,2345") === false; // no match
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用RegExp对象。
var str = "123545,123";
var patt = new RegExp("/^(?:\d*\,\d{1,3}|\d+)$/");
var res = patt.test(str);
执行后,res将为true,因为str匹配您正在寻找的模式,
答案 3 :(得分:0)
试试这个表达式:
\d+(,\d{3})*([.]\d{1,3})?
有效示例:
1,200.123
1,200.12
1,200.1
1.123
1,200,222
1,200,002