2016-05-16 11 views
0

こんにちは、この関数のこの正規表現を改善して負の値を含めることができますか?私は/[0-9]{2}$/は、小数点以下2桁を検証し得る限り負の値を持つ小数のkeypressの正規表現

function Validate7EntY2Dec(e, field) { 
    key = e.keyCode ? e.keyCode : e.which 
    // backspace 
    if (key == 8) return true 

    // 0-9 a partir del .decimal 
    if (field.value != "") { 
     if ((field.value.indexOf(".")) > 0) { 
      if (key > 47 && key < 58) { 
       if (field.value == "") return true 
       regexp = /[0-9]{2}$/ 
       return !(regexp.test(field.value)) 
      } 
     } 
    } 
    // 0-9 
    if (key > 47 && key < 58) { 
     if (field.value == "") return true 
     regexp = /[0-9]{7}/ 
     return !(regexp.test(field.value)) 
    } 
    // . 
    if (key == 46) { 
     if (field.value == "") return false 
     regexp = /^[0-9]+$/ 
     return regexp.test(field.value) 
    } 
    // other key 
    return false 
} 

、および/[0-9]{7}/は整数で7 digistを検証:

関数です。私はこれも負の値を受け入れたいので、ユーザーは例えば-1234567.12を挿入することができます。

私はこの正規表現^[+-]?[0-9]{1,9}(?:\.[0-9]{1,2})?$を見つけましたが、私の機能に挿入する方法はわかりません。 はまた/[0-9]{7}/-を追加すると、負の値を受け入れることがわかったが、それはdidntの、私がやったこの:/[-0-9]{7}/私はそのが既に使用されているので、私の機能を維持する必要があり

ありがとうございます!

編集:

function Validate7EntY2Dec_Neg(e, field) { 
    key = e.keyCode ? e.keyCode : e.which 
    // backspace 
    if (key == 8) return true 

    // 0-9 a partir del .decimal 
    if (field.value != "") { 
     if ((field.value.indexOf(".")) > 0) { 
      if (key > 47 && key < 58) { 
       if (field.value == "") return true 
       regexp = /[0-9]{2}$/ 
       return !(regexp.test(field.value)) 
      } 
     } 
    } 
    // 0-9 
    if (key > 47 && key < 58) { 
     if (field.value == "") return true 
     regexp = /[0-9]{7}/ 
     return !(regexp.test(field.value)) 
    } 
    // . 
    if (key == 46) { 
     if (field.value == "") return false 
     regexp = /^[+-]?[0-9]{7}\.[0-9]{2}$/ 
     return regexp.test(field.value) 
    } 
    // other key 
    return false 
} 

変更がオンになっている "(キー== 46)場合、この関数..."

if (key == 46) { 
    if (field.value == "") return false 
    regexp = /^[+-]?[0-9]{7}\.[0-9]{2}$/ 
    return regexp.test(field.value) 
} 

@Ian私のコードの勧告は、このようにした後

@Ianエスケープ方法 - ??

+0

なぜ使用正規表現:

は、私は、次のコードを提案するでしょうか? 'number <0'は負の値を完全に細かくチェックしています – SeinopSys

+0

正規表現は@SeinopSysの小数です。私は7つの整数と小数点以下2つが必要です – Marcos

+0

あなたはこれらの部分を検証するためにさまざまな方法を使うことができます。正規表現ベースのソリューションよりも維持しています。 – SeinopSys

答えて

0

^[+ - ]?[0-9] {7} \。[0-9] {2} $は動作するはずです。キャレットは文字列の開始を強制し、ドルは終了を強制します。私はまた、7.2桁の数字を強制している、私はそれがあなたが欲しいものだと思う。また、オプションの+/-が付いています。

+0

yeap、私はその種の正規表現を望んでいますが、私の関数では....既存のValidate7EntY2Dec関数に+/-を含めることができますか?ありがとう:))) – Marcos

+0

あなたが示した正規表現を使用してください。regexp =/^ [0-9] + $ /行には整数を検証するmineが含まれていなければなりません。整数と小数点を個別に検証したい場合は、それを解読してください – Ian

+0

クール、ありがとう、私は今試してみます、私たちは私の目標に近づいています。整数と小数点を別々に検証するにはどうすればいいですか? – Marcos

0

私はキーを押すことを心配することをやめ、フィールドが変更されるたびにフィールド全体を検証することを提案します。私はこれがパフォーマンス上の問題を引き起こさず、コードの保守性を大幅に向上させると信じています。しかし

function Validate7EntY2Dec_Neg(e, field) { 
    return /^[+-]?[0-9]{7}\.[0-9]{2}$/.test(field.value); 
} 
関連する問題