当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JavaScript正则表达式校验与递归函数实际应用实例解析

JavaScript正则表达式校验与递归函数实际应用实例解析

2017年12月12日  | 移动技术网IT编程  | 我要评论

 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正则表达式校验与递归函数实际应用实例解析,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网