JXMovies/CMS/JXCMS.CMS.Movie/Admin/Content/js/Validate.js
2020-02-09 19:10:05 +08:00

446 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function cronValidate(cronExpression ){
//返回错误信息用
var message = '';
//先将cron表达式进行分割
var cronParams = cronExpression.split(" ");
//判断cron表达式是否具有该具有的属性长度没有年份的长度为6带年份的长度为7其他情况都是错误的
if (cronParams.length < 6 || cronParams.length > 7) {
return "cron表达式需要输入6-7位参数请重新输入";
}else{
//日和周必须有一个为?,或者全为*
if((cronParams[3] == "?" && cronParams[5] != "?") || (cronParams[5] == "?" && cronParams[3] != "?") || (cronParams[3] == "*" && cronParams[5] == "*")){
//检查第一位的秒是否正确
message = checkSecondsField(cronParams[0]);
if (message != true) {
return message;
}
//检查第二位的分是否正确
message = checkMinutesField(cronParams[1]);
if (message != true) {
return message;
}
//检查第三位的时是否正确
message = checkHoursField(cronParams[2]);
if (message != true) {
return message;
}
//检查第四位的日是否正确
message = checkDayOfMonthField(cronParams[3]);
if (message != true) {
return message;
}
//检查第五位的月是否正确
message = checkMonthsField(cronParams[4]);
if (message != true) {
return message;
}
//检查第6位的周是否正确
message = checkDayOfWeekField(cronParams[5]);
if (message != true) {
return message;
}
//检查第七位的年是否正确
if(cronParams.length>6){
message = checkYearField(cronParams[6]);
if (message != true) {
return message;
}
}
return true;
}else{
return "指定日时周必须设为不指定(?),指定周时日必须设为不指定(?)"
}
}
}
//检查秒的函数方法
function checkSecondsField(secondsField) {
return checkField(secondsField, 0, 59, "秒");
}
//检查分的函数方法
function checkMinutesField(minutesField) {
return checkField(minutesField, 0, 59, "分");
}
//检查小时的函数方法
function checkHoursField(hoursField) {
return checkField(hoursField, 0, 23, "时");
}
//检查日期的函数方法
function checkDayOfMonthField(dayOfMonthField) {
if (dayOfMonthField == "?") {
return true;
}
if (dayOfMonthField.indexOf("L") >= 0) {
return checkFieldWithLetter(dayOfMonthField, "L", 1, 7, "日");
} else if ( dayOfMonthField.indexOf("W") >= 0) {
return checkFieldWithLetter(dayOfMonthField, "W", 1, 31, "日");
} else if (dayOfMonthField.indexOf("C") >= 0) {
return checkFieldWithLetter(dayOfMonthField, "C", 1, 31, "日");
}
return checkField( dayOfMonthField, 1, 31, "日");
}
//检查月份的函数方法
function checkMonthsField(monthsField) {
//月份简写处理
if(monthsField != "*"){
monthsField=monthsField.replace("JAN", "1");
monthsField=monthsField.replace("FEB", "2");
monthsField=monthsField.replace("MAR", "3");
monthsField=monthsField.replace("APR", "4");
monthsField=monthsField.replace("MAY", "5");
monthsField=monthsField.replace("JUN", "6");
monthsField=monthsField.replace("JUL", "7");
monthsField=monthsField.replace("AUG", "8");
monthsField=monthsField.replace("SEP", "9");
monthsField=monthsField.replace("OCT", "10");
monthsField=monthsField.replace("NOV", "11");
monthsField=monthsField.replace("DEC", "12");
return checkField(monthsField, 1, 12, "月份");
}else{
return true;
}
}
//星期验证
function checkDayOfWeekField(dayOfWeekField) {
dayOfWeekField=dayOfWeekField.replace("SUN", "1" );
dayOfWeekField=dayOfWeekField.replace("MON", "2" );
dayOfWeekField=dayOfWeekField.replace("TUE", "3" );
dayOfWeekField=dayOfWeekField.replace("WED", "4" );
dayOfWeekField=dayOfWeekField.replace("THU", "5" );
dayOfWeekField=dayOfWeekField.replace("FRI", "6" );
dayOfWeekField=dayOfWeekField.replace("SAT", "7" );
if (dayOfWeekField == "?") {
return true;
}
if (dayOfWeekField.indexOf("L") >= 0) {
return checkFieldWithLetterWeek(dayOfWeekField, "L", 1, 7, "星期");
} else if (dayOfWeekField.indexOf("C") >= 0) {
return checkFieldWithLetterWeek(dayOfWeekField, "C", 1, 7, "星期");
} else if (dayOfWeekField.indexOf("#") >= 0) {
return checkFieldWithLetterWeek(dayOfWeekField, "#", 1, 7, "星期");
} else {
return checkField(dayOfWeekField, 1, 7, "星期");
}
}
//检查年份的函数方法
function checkYearField(yearField) {
return checkField(yearField, 1970, 2099, "年的");
}
//通用的检查值的大小范围的方法( - , / *)
function checkField(value, minimal, maximal, attribute) {
//校验值中是否有“-”,如果有“-”的话,下标会>0
if (value.indexOf("-") > -1 ) {
return checkRangeAndCycle(value, minimal, maximal,attribute);
}
//校验值中是否有“,”,如果有“,”的话,下标会>0
else if (value.indexOf(",") > -1) {
return checkListField(value, minimal, maximal,attribute);
}
//校验值中是否有“/”,如果有“/”的话,下标会>0
else if (value.indexOf( "/" ) > -1) {
return checkIncrementField( value, minimal, maximal ,attribute);
}
//校验值是否为“*”
else if (value=="*") {
return true;
}
//校验单独的数字,英文字母,以及各种神奇的符号等...
else {
return checkIntValue(value, minimal, maximal,true, attribute);
}
}
//检测是否是整数以及是否在范围内,参数:检测的值,下限,上限,是否检查端点,检查的属性
function checkIntValue(value, minimal, maximal, checkExtremity,attribute) {
try {
//用10进制犯法来进行整数转换
var val = parseInt(value, 10);
if (value == val) {
if (checkExtremity) {
if (val < minimal || val > maximal) {
return (attribute+"的参数取值范围必须在"+ minimal + "-" + maximal +"之间");
}
return true;
}
return true;
}
return (attribute+"的参数存在非法字符,必须为整数或允许的大写英文");
} catch (e) {
return (attribute+"的参数有非法字符,必须是整数~")
}
}
//检验枚举类型的参数是否正确
function checkListField(value, minimal, maximal,attribute) {
var st = value.split(",");
var values = new Array(st.length);
//计算枚举的数字在数组中中出现的次数,出现一次为没有重复的。
var count=0;
for(var j = 0; j < st.length; j++) {
values[j] = st[j];
}
//判断枚举类型的值是否重复
for(var i=0;i<values.length;i++){
//判断枚举的值是否在范围内
message = checkIntValue(values[i], minimal, maximal, true, attribute);
if (message!=true) {
return message;
}
count=0;
for(var j=0;j<values.length;j++){
if(values[i]==values[j])
{
count++;
}
if(count>1){
return (attribute+"中的参数重复");
}
}
}
var previousValue = -1;
//判断枚举的值是否排序正确
for (var i= 0; i < values.length; i++) {
var currentValue = values[i];
try {
var val = parseInt(currentValue, 10);
if (val < previousValue) {
return (attribute+"的参数应该从小到大");
} else {
previousValue = val;
}
} catch (e) {
//前面验证过了,这边的代码不可能跑到
return ("这段提示用不到")
}
}
return true;
}
//检验循环
function checkIncrementField(value, minimal, maximal, attribute) {
if(value.split("/").length>2){
return (attribute + "中的参数只能有一个'/'");
}
var start = value.substring(0, value.indexOf("/"));
var increment = value.substring(value.indexOf("/") + 1);
if (start != "*") {
//检验前值是否正确
message = checkIntValue(start, minimal, maximal, true, attribute);
if(message != true){
return message;
}
//检验后值是否正确
message = checkIntValue(increment, minimal, maximal, true, attribute);
if(message != true){
return message;
}
return true;
} else {
//检验后值是否正确
return checkIntValue(increment, minimal, maximal, false, attribute);
}
}
//检验范围
function checkRangeAndCycle(params, minimal, maximal, attribute){
//校验“-”符号是否只有一个
if(params.split("-").length>2){
return (attribute + "中的参数只能有一个'-'");
}
var value = null;
var cycle = null;
//检验范围内是否有嵌套周期
if(params.indexOf("/") > -1){
//校验“/”符号是否只有一个
if(params.split("/").length>2){
return (attribute + "中的参数只能有一个'/'");
}
value = params.split("/")[0];
cycle = params.split("/")[1];
//判断循环的参数是否正确
message =checkIntValue(cycle, minimal, maximal, true, attribute);
if (message!=true) {
return message;
}
}else{
value = params;
}
var startValue = value.substring(0, value.indexOf( "-" ));
var endValue = value.substring(value.indexOf( "-" ) + 1);
//判断参数范围的第一个值是否正确
message =checkIntValue(startValue, minimal, maximal, true, attribute);
if (message!=true) {
return message;
}
//判断参数范围的第二个值是否正确
message =checkIntValue(endValue, minimal, maximal, true, attribute);
if(message!=true){
return message;
}
//判断参数的范围前值是否小于后值
try {
var startVal = parseInt(startValue, 10);
var endVal = parseInt(endValue, 10);
if(endVal < startVal){
return (attribute+"的取值范围错误,前值必须小于后值");
}
if((endVal-startVal)<parseInt(cycle,10)){
return (attribute+"的取值范围内的循环无意义");
}
return true;
} catch (e) {
//用不到这行代码的
return (attribute+"的参数有非法字符,必须是整数");
}
}
//检查日中的特殊字符
function checkFieldWithLetter(value, letter, minimalBefore, maximalBefore,attribute) {
//判断是否只有一个字母
for(var i=0;i<value.length;i++){
var count = 0;
if(value.charAt(i)==letter){
count++;
}
if(count>1){
return (attribute+"的值的"+letter+"字母只能有一个")
}
}
//校验L
if(letter == "L"){
if(value == "LW"){
return true;
}
if(value=="L"){
return true;
}
if(value.endsWith("LW")&&value.length>2)
{
return (attribute + "中的参数最后的LW前面不能有任何字母参数")
}
if(!value.endsWith("L"))
{
return (attribute + "中的参数L字母后面不能有W以外的字符、数字等")
}else{
var num = value.substring(0,value.indexOf(letter));
return checkIntValue(num, minimalBefore, maximalBefore, true, attribute);
}
}
//校验W
if(letter == "W"){
if(!value.endsWith("W")){
return (attribute + "中的参数的W必须作为结尾")
}else{
if(value=="W"){
return (attribute + "中的参数的W前面必须有数字")
}
var num = value.substring(0,value.indexOf(letter));
return checkIntValue(num, minimalBefore, maximalBefore, true, attribute);
}
}
if(letter == "C"){
if(!value.endsWith("C")){
return (attribute + "中的参数的C必须作为结尾")
}else{
if(value=="C"){
return (attribute + "中的参数的C前面必须有数字")
}
var num = value.substring(0,value.indexOf(letter));
return checkIntValue(num, minimalBefore, maximalBefore, true, attribute);
}
}
}
//检查星期中的特殊字符
function checkFieldWithLetterWeek(value, letter, minimalBefore, maximalBefore,attribute) {
//判断是否只有一个字母
for(var i=0;i<value.length;i++){
var count = 0;
if(value.charAt(i)==letter){
count++;
}
if(count>1){
return (attribute+"的值的"+letter+"字母只能有一个")
}
}
//校验L
if(letter == "L"){
if(value=="L"){
return true;
}
if(!value.endsWith("L"))
{
return (attribute + "中的参数L字母必须是最后一位")
}else{
var num = value.substring(0,value.indexOf(letter));
return checkIntValue(num, minimalBefore, maximalBefore, true, attribute);
}
}
if(letter == "C"){
if(!value.endsWith("C")){
return (attribute + "中的参数的C必须作为结尾")
}else{
if(value=="C"){
return (attribute + "中的参数的C前面必须有数字")
}
var num = value.substring(0,value.indexOf(letter));
return checkIntValue(num, minimalBefore, maximalBefore, true, attribute);
}
}
if(letter == "#"){
if(value=="#"){
return (attribute + "中的#前后必须有整数");
}
if(value.charAt(0)==letter){
return (attribute + "中的#前面必须有整数")
}
if(value.endsWith("#")){
return (attribute + "中的#后面必须有整数")
}
var num1 = value.substring(0,value.indexOf(letter));
var num2 = value.substring(value.indexOf(letter)+1,value.length)
message = checkIntValue(num1, 1, 4, true, (attribute+"的#前面"));
if(message!=true){
return message;
}
message = checkIntValue(num2, minimalBefore, maximalBefore, true, (attribute+"的#后面"));
if(message!=true){
return message;
}
return true;
}
}
function IsURL (str_url) {
var Expression=/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
var objExp=new RegExp(Expression);
if(objExp.test(str_url)==true){
return true;
}else{
return false;
}
}