欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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