验证具有前两位数字和一个字母

时间:2017-01-27 11:45:38

标签: javascript jquery asp.net validation

我要开发一个用于验证文本字段的JavaScript代码。最后一个字符必须是“M”或“D”或0-9之间的任何数字。字段的长度不得超过3个字符。

例如。有效输入为8M或25D或110或45 文本字段的格式如下::

  1. 如果最后一个字符是字母,那么它必须是'M'或'D'
  2. 如果最后一个字符是M,则该数字必须小于12,即11M或4M但不是12M或13M
  3. 如果最后一个字符是D,则该数字必须小于30,即1D或15D或25D但不是30D或45D
  4. 如何为此验证编写javascript代码?请帮忙。

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

3 个答案:

答案 0 :(得分:0)

@nischalinn

请尝试使用正则表达式

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

答案 1 :(得分:0)

你可以在jquery中这样做: 我测试了它的工作。如果您想要更多信息,我会添加它。

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();" />

答案 2 :(得分: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');