JavaScript正则表达式校验与递归函数实际应用实例解析
程序员文章站
2022-05-14 19:29:49
js递归函数(菲波那切数列)
实例解析:
一组数字:0 1 1 2 3 5 8 13
0 1 2 3 4 5 6 7
...
js递归函数(菲波那切数列)
实例解析:
一组数字:0 1 1 2 3 5 8 13 0 1 2 3 4 5 6 7 sl(0)=0; sl(1)=1; sl(2)=sl(0)+sl(1); sl(3)=sl(1)+sl(2); function sl(i){ if(i==0){ return 0; }else if(i==1){ return 1; }else{ return sl(i-1)+sl(i-2); } }
正则表达式检验
//校验是否全由数字组成 function isdigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 function isregisterusername(s) { var patrn=/^[a-za-z]{1}([a-za-z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } //校验用户姓名:只能输入1-30个以字母开头的字串 function istruename(s) { var patrn=/^[a-za-z]{1,30}$/; if (!patrn.exec(s)) return false return true } //校验密码:只能输入6-20个字母、数字、下划线 function ispasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true } //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-” function istel(s) { //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } //校验手机号码:必须以数字开头,除数字外,可含有“-” function ismobil(s) { var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } //校验邮政编码 function ispostalcode(s) { //var patrn=/^[a-za-z0-9]{3,12}$/; var patrn=/^[a-za-z0-9 ]{3,12}$/; if (!patrn.exec(s)) return false return true } //校验搜索关键字 function issearch(s) { var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/; if (!patrn.exec(s)) return false return true } function isip(s) //by zergling { var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true } * function: isbetween * parameters: val as any value * lo as lower limit to check * hi as higher limit to check * calls: nothing * returns: true if val is between lo and hi both inclusive, otherwise false. function isbetween (val, lo, hi) { if ((val < lo) || (val > hi)) { return(false); } else { return(true); } } * function: isdate checks a valid date * parameters: thestr as string * calls: isbetween, isint * returns: true if thestr is a valid date otherwise false. function isdate (thestr) { var the1st = thestr.indexof('-'); var the2nd = thestr.lastindexof('-'); if (the1st == the2nd) { return(false); } else { var y = thestr.substring(0,the1st); var m = thestr.substring(the1st+1,the2nd); var d = thestr.substring(the2nd+1,thestr.length); var maxdays = 31; if (isint(m)==false || isint(d)==false || isint(y)==false) { return(false); } else if (y.length < 4) { return(false); } else if (!isbetween (m, 1, 12)) { return(false); } else if (m==4 || m==6 || m==9 || m==11) maxdays = 30; else if (m==2) { if (y % 4 > 0) maxdays = 28; else if (y % 100 == 0 && y % 400 > 0) maxdays = 28; else maxdays = 29; } if (isbetween(d, 1, maxdays) == false) { return(false); } else { return(true); } } } * function: iseudate checks a valid date in british format * parameters: thestr as string * calls: isbetween, isint * returns: true if thestr is a valid date otherwise false. function iseudate (thestr) { if (isbetween(thestr.length, 8, 10) == false) { return(false); } else { var the1st = thestr.indexof('/'); var the2nd = thestr.lastindexof('/'); if (the1st == the2nd) { return(false); } else { var m = thestr.substring(the1st+1,the2nd); var d = thestr.substring(0,the1st); var y = thestr.substring(the2nd+1,thestr.length); var maxdays = 31; if (isint(m)==false || isint(d)==false || isint(y)==false) { return(false); } else if (y.length < 4) { return(false); } else if (isbetween (m, 1, 12) == false) { return(false); } else if (m==4 || m==6 || m==9 || m==11) maxdays = 30; else if (m==2) { if (y % 4 > 0) maxdays = 28; else if (y % 100 == 0 && y % 400 > 0) maxdays = 28; else maxdays = 29; } if (isbetween(d, 1, maxdays) == false) { return(false); } else { return(true); } } } } * function: compare date! which is the latest! * parameters: lessdate,moredate as string * calls: isdate,isbetween * returns: true if lessdate<moredate function iscomdate (lessdate , moredate) { if (!isdate(lessdate)) { return(false);} if (!isdate(moredate)) { return(false);} var less1st = lessdate.indexof('-'); var less2nd = lessdate.lastindexof('-'); var more1st = moredate.indexof('-'); var more2nd = moredate.lastindexof('-'); var lessy = lessdate.substring(0,less1st); var lessm = lessdate.substring(less1st+1,less2nd); var lessd = lessdate.substring(less2nd+1,lessdate.length); var morey = moredate.substring(0,more1st); var morem = moredate.substring(more1st+1,more2nd); var mored = moredate.substring(more2nd+1,moredate.length); var date1 = new date(lessy,lessm,lessd); var date2 = new date(morey,morem,mored); if (date1>date2) { return(false);} return(true); } * function isempty checks if the parameter is empty or null * parameter str as string function isempty (str) { if ((str==null)||(str.length==0)) return true; else return(false); } * function: isint * parameter: thestr as string * returns: true if the passed parameter is an integer, otherwise false * calls: isdigit function isint (thestr) { var flag = true; if (isempty(thestr)) { flag=false; } else { for (var i=0; i<thestr.length; i++) { if (isdigit(thestr.substring(i,i+1)) == false) { flag = false; break; } } } return(flag); } * function: isreal * parameter: hestr as string declen as integer (how many digits after period) * returns: true if thestr is a float, otherwise false * calls: isint function isreal (thestr, declen) { var dot1st = thestr.indexof('.'); var dot2nd = thestr.lastindexof('.'); var ok = true; if (isempty(thestr)) return false; if (dot1st == -1) { if (!isint(thestr)) return(false); else return(true); } else if (dot1st != dot2nd) return (false); else if (dot1st==0) return (false); else { var intpart = thestr.substring(0, dot1st); var decpart = thestr.substring(dot2nd+1); if (decpart.length > declen) return(false); else if (!isint(intpart) || !isint(decpart)) return (false); else if (isempty(decpart)) return (false); else return(true); } } * function: isemail * parameter: string (email address) * returns: true if the string is a valid email address * false if the passed string is not a valid email address * email format: anyname@emailserver e.g; webmaster@hotmail.com * @ sign can appear only once in the email address. function isemail (thestr) { var atindex = thestr.indexof('@'); var dotindex = thestr.indexof('.', atindex); var flag = true; thesub = thestr.substring(0, dotindex+1) if ((atindex < 1)||(atindex != thestr.lastindexof('@'))||(dotindex < atindex + 2)||(thestr.length <= thesub.length)) { return(false); } else { return(true); } } * function: newwindow * parameters: doc -> document to open in the new window hite -> height of the new window wide -> width of the new window bars -> 1-scroll bars = yes 0-scroll bars = no resize -> 1-resizable = yes 0-resizable = no * calls: none * returns: new window instance function newwindow (doc, hite, wide, bars, resize) { var winnew="_blank"; var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,"; opt+=("scrollbars="+bars+","); opt+=("resizable="+resize+","); opt+=("width="+wide+","); opt+=("height="+hite); winhandle=window.open(doc,winnew,opt); return; } * function: decimalformat * parameters: paramvalue -> field value * calls: none * returns: formated string function decimalformat (paramvalue) { var intpart = parseint(paramvalue); var decpart =parsefloat(paramvalue) - intpart; str = ""; if ((decpart == 0) || (decpart == null)) str += (intpart + ".00"); else str += (intpart + decpart); return (str); }
正则表达式应用
"^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\\d+$" //整数 "^\\d+(\\.\\d+)?$" //非负浮点数(正浮点数 + 0) "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数 "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //非正浮点数(负浮点数 + 0) "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数 "^(-?\\d+)(\\.\\d+)?$" //浮点数 "^[a-za-z]+$" //由26个英文字母组成的字符串 "^[a-z]+$" //由26个英文字母的大写组成的字符串 "^[a-z]+$" //由26个英文字母的小写组成的字符串 "^[a-za-z0-9]+$" //由数字和26个英文字母组成的字符串 "^\\w+$" //由数字、26个英文字母或者下划线组成的字符串 "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$" //email地址 "^[a-za-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\s*)?$" //url
递归函数应用
总结
以上所述是小编给大家介绍的javascript正则表达式校验与递归函数实际应用实例解析,希望对大家有所帮助