Javascript中运用正则表达式可以处理复杂字符串,提高效率.
如要处理一个字符串:"fierfheriuhfi2008-09-05T00:00:00+08:00jfioerjfoeri".现在要将其中的"T00:00:00+08:00"去掉.通常可以直接用replace("T00:00:00+08:00","")来处理.但是当时间是变动时显然不能这样处理.对于这种复杂变化,但是实在一定规则范围内变化的字符串就可以用上正则表达式了.像上面的字符串可以表示为"/(T)(/d{2}:/d{2}:/d{2}[+]/d{2}:/d{2})".这个看似乱码的东西可以表述该格式的字符串了,然后用replace(/(T)(/d{2}:/d{2}:/d{2}[+]/d{2}:/d{2})/g, "");就可以了./g表示替换字符串中所有符合的字串.很好很强大,呵呵
还有一个很强大的用法.
- $("pagecontent").innerHTML = ((function(){/*<table id="spage" style="height:100%; width:100%; padding:0px" border="0" cellpadding="0" cellspacing="0" >
- <tr style="height:30;padding:0px"><td style="height: 25px" >
- 我来打酱油的
- </td></tr>
- <tr ><td align="center" valign="top">
- 苦练叉腰肌
- </td></tr>
- <tr style="height:100px"></tr>
- </table>*/}).toString().replace(/^.+?/*|//(?=//)|/*.+?$/gi, ""));
实际运行下,注释部分变成了html输出了.用上这个以后就不用再一个个加号连接了.写好html然后用注释.再套这个就可以输出了.
附:一点小资料
匹配首尾空格的正则表达式:(^/s*)|(/s*$)
javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
String.prototype.trim = function()
{
return this.replace(/(^/s*)|(/s*$)/g, "");
}
^/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个英文字母或者下划线组成的字符串
^[a-zA-z]+://匹配(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$ //匹配url
/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* //匹配Email地址的正则表达式