2017-01-27 9 views
1

私はテキストフィールドの検証のためのJavaScriptコードを開発しました。最後の文字は 'M'または 'D'または0〜9の任意の数字でなければなりません。フィールドの長さは3文字を超えてはいけません。最初の2桁と1つのアルファベットを持つフィールドの検証

例えば、有効な入力は、テキストフィールドの形式はこのようなものです8Mまたは25Dまたは110または45 です::

  1. 最後の文字がアルファベットの場合は、最後の場合、それは「M」または「D」
  2. でなければなりません文字はM、数字は11Mまたは4Mではなく12Mまたは13Mでなければなりません
  3. 最後の文字がDの場合、数字は1Dまたは15Dまたは25Dではなく30Dまたは45Dでなければなりません

どうすればこの検証のためのJavaScriptコードを書くことができますか?助けてください。 私がテストし、その作業を:

<asp:TextBox ID="txtFact" runat="server" AutoCompleteType="Disabled" MaxLength="3" /> 
+1

私はそれに取り組んでいます。できるだけ早く確実にアップデートを与える –

+1

@SorangwalaAbbasaliありがとう! – nischalinn

+0

はMとDを常に大文字で入力しますか? –

答えて

0

@nischalinnのplsは、あなたはjqueryの中でこのように行うことができます正規表現

var regexMD = /^((0?[1-9]|1[012])M|(0?[1-9]|[12][0-9]|3[01])D)$/; 
regexMD.test('01D'); //true 
regexMD.test('1D'); //true 
regexMD.test('32D'); //false 
regexMD.test('35D'); //false 

regexMD.test('01M'); //true 
regexMD.test('1M'); //true 
regexMD.test('13M'); //false 
regexMD.test('23M'); //false 
+0

この正規表現を生成するためにいくつかのツールを使いましたか? – bassxzero

+0

@ bassxzero私は上記の正規表現をテストするためにhttps://www.regex101.com/を使用しました – Jeet

0

次試してください。何かもっと話したいだけなら、それを追加します。あなたの要求ごとの答えとして、それを投稿

function findAns() { 
 
    var i = 12, j = 30, id = "12M"; 
 
    var last = id.substr(id.length-1); 
 
    var lengthOfString = id.length; 
 
    var firsttwoCharacters = id.substr(0, 2); 
 
    if (lengthOfString>2) { 
 
     alert(firsttwoCharacters); 
 
     if (last == "M") { 
 
      if (i-firsttwoCharacters>0) { 
 
       alert("OK"); 
 
      } 
 
      else { 
 
       alert("Not Ok"); 
 
      } 
 
     } 
 
     else if(last=="D") { 
 
      if (j - firsttwoCharacters > 0) { 
 
       alert("OK"); 
 
      } 
 
      else { 
 
       alert("Not Ok"); 
 
      } 
 
     } 
 
    } 
 
    else { 
 
     last = id.substr(id.length - 1) 
 
     var firstChar = id.substr(0, 1); 
 
     alert(firstChar); 
 
     if (last == "M") { 
 
      if (i - firstChar > 0) { 
 
       alert("OK"); 
 
      } 
 
      else { 
 
       alert("Not Ok"); 
 
      } 
 
     } 
 
     else if (last == "D") { 
 
      if (j - firstChar > 0) { 
 
       alert("OK"); 
 
      } 
 
      else { 
 
       alert("Not Ok"); 
 
      } 
 
     } 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="button" name="name" value="Button click" onclick="javascript: findAns();" />

+0

あなたはjavascript用のコードを修正できますか?ありがとうございました!!! – nischalinn

+0

確かに私はJavaScriptのコードを投稿します。 –

+0

これについて実際に緊張する必要はありません。同じスクリプトリンクとtextAreaからの関数呼び出しを使用するだけで、あなたの答えが得られます。 –

0

function validate(str){ 
    console.log('Testing:' + str); 
    var number_regex = /^[1-9]\d*$/; 

    if(str.length > 3){ 
    console.log('invalid length'); 
    } 
    else if(str.slice(-1) === 'M'){ 
    console.log('M case'); 
    var number_part = str.slice(0, -1); 

    if(!number_regex.test(number_part)){ 
     console.log('invalid input'); 
    } 
    else if(+number_part > 11){ 
     console.log('invalid number part input'); 
    } 
    else { 
     console.log('valid input'); 
    } 
    } 
    else if(str.slice(-1) === 'D'){ 
    console.log('D case'); 
    var number_part = str.slice(0, -1); 

    if(!number_regex.test(number_part)){ 
     console.log('invalid input'); 
    } 
    else if(+number_part > 29){ 
     console.log('invalid number part input'); 
    } 
    else { 
     console.log('valid input'); 
    } 
    } 
    else if(number_regex.test(str) ){ 
    console.log('all numbers case') 
    console.log('valid input') 
    } 
    else { 
    console.log('invalid input'); 
    } 
} 


validate('8M'); 
validate('asdf'); 
validate('asd'); 
validate('1M'); 
validate('12M'); 
validate('13M'); 

validate('0D'); 
validate('12D'); 
validate('29D'); 
validate('30D'); 

validate('301'); 
validate('001'); 
validate('999'); 
関連する問題