我要开发一个用于验证文本字段的JavaScript代码。最后一个字符必须是“M”或“D”或0-9之间的任何数字。字段的长度不得超过3个字符。
例如。有效输入为8M或25D或110或45 文本字段的格式如下::
如何为此验证编写javascript代码?请帮忙。
<asp:TextBox ID="txtFact" runat="server" AutoCompleteType="Disabled" MaxLength="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');