当用户的模式与所需模式不匹配时,我正在使用正则表达式显示工具提示。
规则是:
.
。 到目前为止,我有这种模式^\d{0,8}?(\.)?(\d{1,2})?$
Link,但我无法理解如何同时匹配所有条件。
此模式无法匹配1234567890.12
(它应该)。它只匹配点.
(不应该)。
我发现的一些帖子无法解决问题link。
我错过了什么?
完整的功能
$('.validation').bind({
keyup:function(){
//var objectEvent=$(this);
var objectId=$(this).attr("id");
var objectEvent=$("#"+objectId);
if(objectId=="txt_Attend"){
var ck_input = /^\d+$/;
var msg="Oops! Only numbers 1-9 are allowed";
var extraVal ="0";
}
else if(objectId=="txt_SalesYTD"||objectId=="txt_PrevSales"){//alert(objectId);
//var ck_input = /^\d{0,10}((\.\d{1,2})?|(?<=\d)\.)$/;
var ck_input = /^(?!\.$)\d{0,10}(?:\.(?:\d\d?)?)?$/;
var msg="Enter a valid value. Ex: 123.35";
var extraVal ="";
//alert(ck_input);
}
var input = $.trim(objectEvent.val());
var validationTest =ck_input.test(input);
//alert(validationTest);
//QTY field Validation --------------------------------------------------------------------------------------------------
if(!validationTest||input===extraVal){//If not match ck_input
//alert("algo errado"+input);
objectEvent.val('');//Clear input field
objectEvent.attr('data-original-title',msg);
objectEvent.tooltip('show');
setTimeout( function(){
objectEvent.tooltip('hide');
objectEvent.removeAttr('title');
objectEvent.removeAttr('data-original-title');
} , 2500 ); //Wait 2,5 seconds
}
else{//If validation match ck_input
objectEvent.tooltip('hide');
objectEvent.removeAttr('title');
objectEvent.removeAttr('data-original-title');
}//End of else if(!validationTest||input==='0'){
}//Fim keyUp
});//End of $('.validation').bind({
答案 0 :(得分:1)
您需要将第一个愤怒更改为{0,10}
并将点和第二个数字放在同一个捕获组中,并带有一个必须以数字开头的可选点:
^\d{0,10}((\.\d{1,2})?|(?<=\d)\.)$
答案 1 :(得分:1)