Javascript 验证具有前两位数字和一个字母的字段
我必须开发一个javascript代码来验证文本字段。最后一个字符必须是“M”或“D”或0-9之间的任何数字。字段长度不得超过3个字符 有效输入为8M或25D或110或45 文本字段的格式如下所示:Javascript 验证具有前两位数字和一个字母的字段,javascript,jquery,asp.net,validation,Javascript,Jquery,Asp.net,Validation,我必须开发一个javascript代码来验证文本字段。最后一个字符必须是“M”或“D”或0-9之间的任何数字。字段长度不得超过3个字符 有效输入为8M或25D或110或45 文本字段的格式如下所示: 如果最后一个字符是字母,那么它必须是“M”或“D” 如果最后一个字符是M,则数字必须小于12,即11M或4M,而不是12M或13M 如果最后一个字符是D,则数字必须小于30,即1D或15D或25D,但不是30D或45D 如何编写此验证的javascript代码?请帮忙 <asp:TextBox
<asp:TextBox ID="txtFact" runat="server" AutoCompleteType="Disabled" MaxLength="3" />
@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
@尼斯查林酒店
请试试下面的正则表达式
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
在jquery中可以这样做: 我测试了它,它工作了。如果你还有什么要说的,我会补充的
函数findAns(){
变量i=12,j=30,id=“12M”;
var last=id.substr(id.length-1);
var lengthOfString=id.length;
var firsttwoCharacters=id.substr(0,2);
如果(长度字符串>2){
警报(前两个字符);
如果(最后一个=“M”){
如果(i-firsttwoCharacters>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
否则如果(最后一个==“D”){
如果(j-前两个字符>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
}
否则{
last=id.substr(id.length-1)
var firstChar=id.substr(0,1);
警报(firstChar);
如果(最后一个=“M”){
如果(i-firstChar>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
否则如果(最后一个==“D”){
如果(j-firstChar>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
}
}
您可以在jquery中这样做: 我测试了它,它工作了。如果你还有什么要说的,我会补充的
函数findAns(){
变量i=12,j=30,id=“12M”;
var last=id.substr(id.length-1);
var lengthOfString=id.length;
var firsttwoCharacters=id.substr(0,2);
如果(长度字符串>2){
警报(前两个字符);
如果(最后一个=“M”){
如果(i-firsttwoCharacters>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
否则如果(最后一个==“D”){
如果(j-前两个字符>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
}
否则{
last=id.substr(id.length-1)
var firstChar=id.substr(0,1);
警报(firstChar);
如果(最后一个=“M”){
如果(i-firstChar>0){
警报(“正常”);
}
否则{
警报(“不正常”);
}
}
否则如果(最后一个==“D”){
如果(j-firstChar>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');
根据您的请求将其作为答复发布
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');
我正在努力。一定要尽快更新possible@SorangwalaAbbasali谢谢M和D总是大写吗?好的,那么你今天肯定会得到答案。@Nischallin这个问题看起来不像正则表达式,所以我想你可能需要写if-then语句。这个怎么样?我正在做。一定要尽快更新possible@SorangwalaAbbasali谢谢M和D总是大写吗?好的,那么你今天肯定会得到答案。@Nischallin这个问题看起来不像正则表达式,所以我想你可能需要写if-then语句。这是怎么回事?你是用什么工具生成这个正则表达式还是你自己写的?你是用什么工具生成这个正则表达式还是你自己写的?其实没必要为此紧张。只需使用相同的脚本链接和从文本区域调用的函数,您就会得到答案。实际上,不必为此感到紧张。只要使用相同的脚本链接和从textArea调用的函数,您就会得到答案。