javascript正则表达式应用

//trim方法,去掉字符的前后空格

//^\s+ 匹配开头的一个或多个空白字符   \s+$匹配结果的一个或者多个空白字符

function trim(str){

return str.replace(/^\s+|\s+$/g,'');

}

//将<>等字符进行转义

//replace第二个参数可以是个函数,后面可跟三个参数,match是匹配的字符,pos是匹配的位置,input是str原始的字符串

function escapeXml(str){

return str.replace(/[<>]/g,function(match,pos,input){

switch(match){

case '<':

return '&lt;';

case '>':

return '&gt;';

}

})

}

//判断字符串占多少的字节(汉字占两个字节)

//[^\x00-\xff]  匹配ascii以外的字符,这些字符都占两个字节

function getBytes(str){

var matches = str.match(/[^\x00-\xff]/g);

return str.length + (matches ? matches.length : 0);

}

jQuery-1.4.4验证number的正则表达式

/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/

分析:   这个表达式分两部分来看(?:\d+|\d{1,3}(?:,\d{3})+),(?:\.\d+)?

-?表示可以是"-"开头

  前面的部分再分为两部分来看:\d+ 一个或多个数字,如(1,134)

  \d{1,3}(?:,\d{3})+  每三位以逗号隔开的形式 ,如(1,234  1,2200,333)

  后面的部分:(?:\.\d+)? 可以是小数结尾(如.1,.01)(?:表示这个分组不能被捕获)

jQuery-1.4.4 判断时间格式

/^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9])):(([0]?[0-9])|([1-5][0-9]))$/

jQuery-1.4.4 date格式验证正则式分析:

可以看出这个正则是有漏洞的,1900-02-29这个日期也是合法的,但是1900年的2月只有28天

/^

(

(\d{2}(([02468][048])|([13579][26]))[\-\/\s]?     //4的倍数的年份  如1900 2000 2004 2008 2012

(

(((0[13578])|(1[02]))[\-\/\s]?((0[1-9])|([1-2][0-9])|(3[01])))|//一三五七八十腊,三十一天永不差

(((0[469])|(11))[\-\/\s]?((0[1-9])|([1-2][0-9])|(30)))|        //四六九冬三十天

(02[\-\/\s]?((0[1-9])|([1-2][0-9])))   //2月29天

)

)

|

(

\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]? //平年 如2001...2009 2010 2011 2013

(

(((0[13578])|(1[02]))[\-\/\s]?((0[1-9])|([1-2][0-9])|(3[01])))| 

(((0[469])|(11))[\-\/\s]?((0[1-9])|([1-2][0-9])|(30)))|

(02[\-\/\s]?((0[1-9])|(1[0-9])|(2[0-8])))   //2月28天

)

)

)

(\s(

(([0-9]|[0-1][0-9]|[2][0-3]))\: //时

([0-9]|[0-5][0-9])              //分

(()|(\:([0-9]|[0-5][0-9])))     //秒

)

)?   //时间可以没有

$/

相关推荐