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 '<';
case '>':
return '>';
}
})
}
//判断字符串占多少的字节(汉字占两个字节)
//[^\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]))) //秒
)
)? //时间可以没有
$/