//校验是否全由数字组成 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 }
正则表达式对象 本对象包含正则表达式模式以及表明如何应用模式的标志。 语法 1 re = /pattern/[flags] 语法 2 re = new RegExp("pattern",["flags"]) 参数 re 必选项。将要赋值为正则表达式模式的变量名。 Pattern 必选项。要使用的正则表达式模式。如果使用语法 1,用 "/" 字符分隔模式。如果用语法 2,用引号将模式引起来。
Flags 可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有: g (全文查找出现的所有 pattern) i (忽略大小写) m (多行查找) 示例 下面的示例创建一个包含正则表达式模式及相关标志的对象(re),向您演示正则表达式对象的用法。在本例中,作为结果的正则表达式对象又用于 match 方法中: function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = new RegExp("ain","g"); // 创建正则表达式对象。 r = s.match(re); // 在字符串 s 中查找匹配。 return(r); } 返回值: ain,ain,ain,ain 属性 lastIndex 属性 | source 属性 方法 compile 方法 | exec 方法 | test 方法 要求 版本 3 请参阅 RegExp 对象 | 正则表达式语法 | String 对象
exec 方法 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。 rgExp.exec(str) 参数 rgExp 必选项。包含正则表达式模式和可用标志的正则表达式对象。 str 必选项。要在其中执行查找的 String 对象或字符串文字。 说明 如 果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。 如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。 exec 方法返回的数组有三个属性,分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。 示例 下面的例子举例说明了 exec 方法的用法: function RegExpTest() { var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) if (ver >= 5.5){ // 测试 JScript 的版本。 var src = "The rain in Spain falls mainly in the plain."; var re = //w+/g; // 创建正则表达式模式。 var arr; while ((arr = re.exec(src)) != null) document.write(arr.index + "-" + arr.lastIndex + arr + "/t"); } else{ alert("请使用 JScript 的更新版本"); } } 返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain test 方法 返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。 rgexp.test(str) 参数 rgexp 必选项。包含正则表达式模式或可用标志的正则表达式对象。 str 必选项。要在其上测试查找的字符串。 说明 test 方法检查在字符串中是否存在一个模式,如果存在则返回 true,否则就返回 false。 全局 RegExp 对象的属性不由 test 方法来修改。 示例 下面的例子举例说明了 test 方法的用法: function TestDemo(re, s) { var s1; // 声明变量。 // 检查字符串是否存在正则表达式。 if (re.test(s)) // 测试是否存在。 s1 = " contains "; // s 包含模式。 else s1 = " does not contain "; // s 不包含模式。 return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。 } 函数调用:document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain.")); 返回值:'The rain in Spain falls mainly in the plain.' contains 'ain+' match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。 stringObj.match(rgExp) 参数 stringObj 必选项。对其进行查找的 String 对象或字符串文字。 rgExp 必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。 说明 如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。 match 方法返回的数组有三个属性:input、index 和 lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。 如果没有设置全局标志 (g),数组的 0 元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素 0 到 n 中包含所有匹配。 示例 下面的示例演示了match 方法的用法: function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/i; // 创建正则表达式模式。 r = s.match(re); // 尝试匹配搜索字符串。 return(r); // 返回第一次出现 "ain" 的地方。 } 返回值:ain 本示例说明带 g 标志设置的 match 方法的用法。 function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/ig; // 创建正则表达式模式。 r = s.match(re); // 尝试去匹配搜索字符串。 return(r); // 返回的数组包含了所有 "ain" // 出现的四个匹配。 } 返回值:ain,ain,ain,ain 上面几行代码演示了字符串文字的 match 方法的用法。 var r, re = "Spain"; r = "The rain in Spain".replace(re, "Canada"); return r; 返回值:The rain in Canada search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 stringObj.search(rgExp) 参数 stringObj 必选项。要在其上进行查找的 String 对象或字符串文字。 rgExp 必选项。包含正则表达式模式和可用标志的正则表达式对象。 说明 search 方法指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。 示例 下面的示例演示了 search 方法的用法。 function SearchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain."; re = /falls/i; // 创建正则表达式模式。 r = s.search(re); // 查找字符串。 return(r); // 返回 Boolean 结果。 } 返回值:18
正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
================================================================== 今天在看《ajax in action》进度比较慢,才看了三章,下面是一些书里提到的ajax的实现基础和框架。
下面是一些兼容不同的浏览器的一些javascirpt的lib库,可以帮你忽略一些不同浏览器的javascript不兼容的问题: x library: http://cross-browser.com/ Sarissa: http://sarissa.sourceforge.net/doc/ Prototype: http://prototype.conio.net/(http://www.javaeye.com/viewtopic.php?t=14347)
three small client-side frameworks:实现非常简单,通过javascript和xmlhttp实现ajax,与server端语言没有任何关系。 Prototype: http://prototype.conio.net/ Scriptaculous: http://script.aculo.us/ Rico: http://openrico.org/rico/home.page
three small server-side frameworks: 自动生成server端的function和object的Javascript存根,简洁的测试页面,远程调用Javascript的安全性,自动转换 数据类型。web页面通过调用javascript存根,来访问相应的server端的function和object。 DWR:http://getahead.ltd.uk/dwr JSON-RPC:http://json-rpc.org/ SAJAX:http://www.modernmethod.com/sajax/ (支持php)
three complex server-side frameworks: 允许你用纯Java等server端语言来代码编写Ajax应用软件,他们提供web页面的代码的封装,依赖性比较强,每个的实现差别比较大,速度可能会 有问题(echo2感觉就比较慢)。 Backbase: http://www.backbase.com Echo2: http://www.nextapp.com/products/echo2/ Ruby on Rails: http://www.rubyonrails.org/
Ruby on Rails最新版包含ajax功能,前面提到的Prototype就是从这个里面分离出去的
6、结合类 6.1 email的判断。 function ismail(mail) { return(new RegExp(/^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$/).test(mail)); } 6.2 手机号码的验证 6.3 身份证的验证 function isIdCardNo(num) { if (isNaN(num)) {alert("输入的不是数字!"); return false;} var len = num.length, re; if (len == 15) re = new RegExp(/^(/d{6})()?(/d{2})(/d{2})(/d{2})(/d{3})$/); else if (len == 18) re = new RegExp(/^(/d{6})()?(/d{4})(/d{2})(/d{2})(/d{3})(/d)$/); else {alert("输入的数字位数不对!"); return false;} var a = num.match(re); if (a != null) { if (len==15) { var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } else { var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;} } return true; }
//一下是取数据的类 //Obj参数指定数据的来源(限定Table),默认第一行为字段名称行 //GetTableData类提供MoveNext方法,参数是表的行向上或向下移动的位数,正数向下移动,负数向上. //GetFieldData方法获得指定的列名的数据 //Sort_desc方法对指定的列按降序排列 //Sort_asc方法对指定的列按升序排列 //GetData方法返回字段值为特定值的数据数组,提供数据,可以在外部进行其他处理 //Delete方法删除当前记录,数组减少一行 //初始化,Obj:table的名字,Leftlen:左面多余数据长度,Rightlen:右面多余数据长度, function GetTableData(Obj,LeftLen,RightLen){ var MyObj=document.all(Obj); var iRow=MyObj.rows.length; var iLen=MyObj.rows[0].cells.length; var i,j;
TableData=new Array(); for (i=0;i< iRow;i++){ TableData[i]=new Array(); for (j=0;jTableStr=MyObj.rows(i).cells(j).innerText; TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim(); TableStr=TableStr.replace(/ /gi,"").replace(//r/n/ig,""); TableData[i][j]=TableStr; } }
function getfielddata(Field){ var colindex=-1; var i=0; if (typeof(Field) == "number"){ colindex=Field; } else { for (i=0;iif (this.TableData[0][i]==Field){ colindex=i; break; } } } if (colindex!=-1) { return this.TableData[this.rowindex][colindex]; }
}
function sort_desc(){//降序 var colindex=-1; var highindex=-1; desc_array=new Array(); var i,j; for (n=0; nField=arguments[arguments.length-1-n]; for (i=0;iif (this.TableData[0][i]==Field){ colindex=i; break; } } if ( colindex==-1 ) return; else { desc_array[0]=this.TableData[0]; for(i=1;idesc_array[i]=this.TableData[1]; highindex=1; for(j=1;jif (desc_array[i][colindex]desc_array[i]=this.TableData[j]; highindex=j; }
} if (highindex!=-1) this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length)); } }
this.TableData=desc_array; } return; }
function sort_asc(){//升序 var colindex=-1; var highindex=-1; var i,j; for (n=0; nasc_array=new Array(); Field=arguments[arguments.length-1-n]; for (i=0;iif (this.TableData[0][i]==Field){ colindex=i; break; } } if ( colindex==-1 ) return; else { asc_array[0]=this.TableData[0]; for(i=1;iasc_array[i]=this.TableData[1]; highindex=1; for(j=1;jif (asc_array[i][colindex]>this.TableData[j][colindex]){ asc_array[i]=this.TableData[j]; highindex=j;
}
} if (highindex!=-1) this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));
} }
this.TableData=asc_array; } return; }
function getData(Field,FieldValue){ var colindex=-1; var i,j;
GetData=new Array(); if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){ return this.TableData; }
for(j=0;jif (this.TableData[0][j]==Field){ colindex=j; } } if (colindex!=-1){
for(i=1;iif (this.TableData[i][colindex]==FieldValue){ GetData[i]=new Array(); GetData[i]=this.TableData[i]; } } } return GetData; } function DeletE(){ this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex+1,this.TableData.length)); this.rows=this.TableData.length; return; } function updateField(Field,FieldValue){ var colindex=-1; var i=0; if (typeof(Field) == "number"){ colindex=Field; } else { for (i=0;iif (this.TableData[0][i]==Field){ colindex=i; break; } } } if (colindex!=-1) { this.TableData[this.rowindex][colindex]=FieldValue; }
public class HttpClientUtils
{
public static CloseableHttpClient createSSLClientDefault(CookieStore cookies){
SSLContext sslContext=null;
try
{
sslContext=new SSLContextBuilder().l
对于JAVA的join,JDK 是这样说的:join public final void join (long millis )throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means t
在网站项目中,没必要把公用的函数写成一个工具类,有时候面向过程其实更方便。 在入口文件index.php里添加 require_once('protected/function.php'); 即可对其引用,成为公用的函数集合。 function.php如下:
<?php /** * This is the shortcut to D
这篇日志是我写的第三次了 前两次都发布失败!郁闷极了!
由于在web开发中常常用到这一部分所以在此记录一下,呵呵,就到备忘录了!
我对于登录信息时使用session存储的,所以我这里是通过实现HttpSessionAttributeListener这个接口完成的。
1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。
public class Ses
Spring Boot 1.3.0.M1于6.12日发布,现在可以从Spring milestone repository下载。这个版本是基于Spring Framework 4.2.0.RC1,并在Spring Boot 1.2之上提供了大量的新特性improvements and new features。主要包含以下:
1.提供一个新的sprin