需要通过使用像JAN-FEB,FEB-MAR ......这样的宣传来验证月份。在这里,我遵循了代码,
function myFunction() {
var patt=/^((["JAN"]+)|(["FEB"]+))$/
text = document.getElementById("p01").innerHTML;
document.getElementById("demo").innerHTML = patt.test(text);
}
<p id="p01">JAN-FEB</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
一旦我验证了这一点,我就得到了错误,但我希望这是真的。它必须只用大写字母开头3个字母的月份名称来验证,如JAN-FEB,JAN-DEC,FEB-JUN,....同样适用于所有类型的月份。
答案 0 :(得分:1)
这是你可以做到的一种方式。我们的想法是获取月份字符串,用连字符分隔它并测试它以获得一组预定义的蛾缩写。
function myFunction() {
var monthsAbvs = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
var monthPattern = document.getElementById("p01").innerHTML;
var months = monthPattern.split('-'); //This creates an array with two separated strings
if (months.length > 2) //Only two month abbreviations are expected
return false;
if (monthsAbvs.indexOf(months[0]) < 0 || (monthsAbvs.indexOf(months[1]) < 0) //Both montsh should be in our list
return false;
return true; //Everything is good by here
}
答案 1 :(得分:1)
您可以使用正则表达式从p
代码中获取月份名称,并使用months
检查每个月在array#every
数组中是否存在。
var myFunction = function() {
var months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
text = document.getElementById("p01").innerHTML;
var match = text.match(/(\w+){3}-(\w+){3}/g);
document.getElementById("demo").innerHTML = match ? match[0].split('-').every(month => months.includes(month)) : false;
}
<p id="p01">JAN-FEB</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
答案 2 :(得分:0)
抱歉,我无法添加评论,但你的问题不是很清楚,如果你想验证你有3个大写字母,后跟一个连字符,然后是大写字母字符,那么你可以使用类似的东西:
/[A-Z]+\-[A-Z]+/
或只复制三个字母,如: / [A-Z] [A-Z] [A-Z] - [A-Z] [A-Z] [A-Z] /
这当然不会检查几个月的溢出情况。 如果我没有正确理解,请添加评论!
答案 3 :(得分:0)
请参阅下面的相关摘要以及相关评论。为了防止这种情况发生,您需要执行以下几项检查
function validateMonthRange() {
var months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; //Array of months
var monthVal = $('selector').split('-'); //get the 2 months value
if(monthVal.length == 2) { //if there are 2 values only
var startIndex = months.indexOf(monthVal[0].toUpperCase());
var endIndex = months.indexOf(monthVal[1].toUpperCase());
if(startIndex >= 0 && endIndex >= 0 && startIndex <= endIndex) {
//valid if both values are in array and start month is less than or equal to the end month
}
}