2016-05-19 9 views
1

ユーザのパターンが目的のパターンと一致しない場合、正規表現を使用してツールチップを表示しています。Regex-grab decimal(12,2)

規則は次のとおり

  1. は1〜10桁以下に一致しなければなりません。例:1234567890または0または123 ... 0桁は空です。禁じられている。
  2. 最大10桁以下の1文字に一致する必要があります。例:1234567890.または12.または1.または0。
  3. 最大10桁以下の1ドットに一致する必要があります。ドットの後1桁または2桁。例:1.1または1234.23または1234567890.1または1234567890.12 OR 0.1 OR 0.21
  4. のみ.が許可されていません。

は、これまでのところ私はこのパターン^\d{0,8}?(\.)?(\d{1,2})?$Linkを持っているが、私は一度にすべての条件に一致する方法を実現することはできません。

このパターンは、(それが必要)1234567890.12と一致することはできません。そしてそれはドットだけと一致しています.(すべきではありません)。 私が見つけたポストは、問題linkを解決しませんでした。

私には何が欠けていますか?あなたが{0,10}に最初の怒りを変更し、数字が先行しなければなりませんオプションのドットと同じキャプチャグループにドットと第二の数字を配置する必要があり


完全な機能

$('.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({ 

答えて

1

^\d{0,10}((\.\d{1,2})?|(?<=\d)\.)$ 

参照のデモ:https://regex101.com/r/jG3uK7/4

+0

こんにちはKasramvdあなたのパターンが 'マッチング.1'と私は、パターンを編集した' .12' – zwitterion

+0

@zwitterionされていませんを使用することができ、今それを試してみてください。 – Kasramvd

1

ますこの

^(?!\.$)\d{0,10}(?:\.(?:\d\d?)?)?$ 

Regex Demo

+0

こんにちはロック、ルール3.あなたのパタパタは '一致していません.1'と' .12' – zwitterion

+0

あなたのパターは、ドットを一致さ修正正規表現 – rock321987

+0

こんにちはロックを参照してください@zwitterion。ルール4は認められません。 Kasramvdは、良好なパターン – zwitterion