许多朋友都用正则表达式去除html标记,或者提取html标记,一般咱们能够很空易找到提取<>之间间的现成代码,可是,对于a标记来讲,<a 到 </a>之间的内容也是颇有价值的,如何能将整个标记所有提取出来呢?html
使用这个正则表达式: <a ([~<]|<?!/a)*</a>,你就能够将某个html中的所有<a标记找出来了,而后将提取来的完成<A标记字符串,送到下一个处理程式序,根据须要提取信息。正则表达式
正则在使用上很是方便,像下面这些正则都是很经常使用的:htm
[^\x00-\xff] //双字节字符(包括汉字在内)字符串
[\u4e00-\u9fa5] //中文字符英文
\n\s*\r //空白行mail
^\s*|\s*$ //首尾空白字符字符
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ //账号:字母开头,5-16字节,字母数字可加下划线浮点数
\d{3}-\d{8}|\d{4}-\d{7} //电话号码数字
[1-9][0-9]{4,} //QQ中文
[1-9]\d{5}(?!\d) //邮编
\d{15}|\d{18} //身份证
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* //Email地址
<(\S*?)[^>]*>.*?</\1>|<.*?/> //HTML标记
\d+\.\d+\.\d+\.\d+ //IP地址
[a-zA-z]+://[^\s]* //网址URL
特定字符串的匹配:
^[A-Za-z]+$//匹配由26个英文字母组成的字符串
^[A-Z]+$//匹配由26个英文字母的大写组成的字符串
^[a-z]+$//匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$//匹配由数字和26个英文字母组成的字符串
^\w+$//匹配由数字、26个英文字母或者下划线组成的字符串
特定数字:
^[1-9]\d*$//正整数
^-[1-9]\d*$//负整数
^-?[1-9]\d*$//整数
^[1-9]\d*|0$//非负整数
^-[1-9]\d*|0$//非正整数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$//正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$//负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$//浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$//非负浮点数
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$//非正浮点数
可是正则也有它的缺点,至少有一个:当html文本很是大的时候,用一个很复杂的正则去提取内容,电脑会卡那么一小会儿。也许这正是所谓“人无完人”吧。