如果以“T”或“TP”开头验证输入

时间:2015-11-20 06:22:21

标签: javascript arrays

我有一个输入。我需要验证值是否以“T”开头,后跟数字或“TP”后跟数字 可接受的值:T12345或TP12345

我的JavaScript代码

var ip_value = document.getElementById('PROMASTER_NO_FW').value;
var v_first_char = ip_value.substr(0, 1);
var v_second_char = ip_value.substr(1, 1);

if (v_first_char.toUpperCase() !== 'T') {
  alert('It must be start with T');
  return false;
} else {
  if (v_second_char.toUpperCase !== 'P' && isNaN(Number(v_second_char))) {
    alert('error2');
    return false;
  } else {
    return true;
  }
}

3 个答案:

答案 0 :(得分:1)

function myFunction() {
    var ip_value = document.getElementById('test').value; //'AB12345';
    var v_first_char = ip_value.substr(0, 1);
    var v_second_char = ip_value.substr(1, 1);
    if (v_first_char.toUpperCase() !== 'T') {
        document.getElementById("error").innerHTML = 'It must be start with T';
    } else if (v_second_char.toUpperCase() !== 'P' && isNaN(Number(v_second_char))) {
        document.getElementById("error").innerHTML = 'error2';
    } else {
        document.getElementById("error").innerHTML = 'no error';
    }
}
It will work on blur <br />
<input type="text" id="test" onblur="myFunction()">
<span id="error">No Error</span>

我认为你的逻辑是完美的,应该可以正常工作,你只需要改变:

v_second_char.toUpperCase

to

v_second_char.toUpperCase()

in last if condition

最终代码

var ip_value = document.getElementById('PROMASTER_NO_FW').value;
var v_first_char = ip_value.substr(0, 1);
var v_second_char = ip_value.substr(1, 1);

if (v_first_char.toUpperCase() !== 'T') {
  alert('It must be start with T');
  return false;
} else {
  if (v_second_char.toUpperCase() !== 'P' && isNaN(Number(v_second_char))) { //change in this line
    alert('error2');
    return false;
  } else {
    return true;
  }
}

或者对于短代码,您可以使用正则表达式,如上面的答案所示。

答案 1 :(得分:0)

您可以使用正则表达式来实现您的方案。

var reg = new RegExp(/^TP?[0-9]+$/)

if((string).match(reg))
    return true
else 
    return false

if语句中的条件也可用于从提供的原始字符串中检索匹配字符串。

答案 2 :(得分:0)

对正则表达式进行模式匹配是最好的选择。当且仅当ip_value是'T'或'TP'后跟至少一个数字时,假设您返回true:

var ip_value = document.getElementById('PROMASTER_NO_FW').value;
var pattern = new RegExp(/^TP?\d+$/);
return pattern.test(ip_value);

/^TP?\d+$/是正则表达式模式或简称正则表达式 - 如果您不熟悉正则表达式,则Javascript上下文中的一个很好的起点是MDN Regular Expressions Guide