<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[常用正则表达式]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 23 Jun 2008 07:11:05 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	正则表达式用于字符串处理、表单验证等场合，实用高效。现将一些常用的表达式收集于此，以备不时之需。<br/><br/>匹配中文字符的正则表达式： [&#92;u4e00-&#92;u9fa5]<br/>评注：匹配中文还真是个头疼的事，有了这个表达式就好办了<br/><br/>匹配双字节字符(包括汉字在内)：[^&#92;x00-&#92;xff]<br/>评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br/><br/>匹配空白行的正则表达式：&#92;n&#92;s*&#92;r<br/>评注：可以用来删除空白行<br/><br/>匹配HTML标记的正则表达式：&lt;(&#92;S*?)[^&gt;]*&gt;.*?&#124;&lt;.*? /&gt;<br/>评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力<br/><br/>匹配首尾空白字符的正则表达式：^&#92;s*&#124;&#92;s*$<br/>评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式<br/><br/>匹配Email地址的正则表达式：&#92;w+([-+.]&#92;w+)*@&#92;w+([-.]&#92;w+)*&#92;.&#92;w+([-.]&#92;w+)*<br/>评注：表单验证时很实用<br/><br/>匹配网址URL的正则表达式：[a-zA-z]+://[^&#92;s]*<br/>评注：网上流传的版本功能很有限，上面这个基本可以满足需求<br/><br/>匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br/>评注：表单验证时很实用<br/><br/>匹配国内电话号码：&#92;d{3}-&#92;d{8}&#124;&#92;d{4}-&#92;d{7}<br/>评注：匹配形式如 0511-4405222 或 021-87888822<br/><br/>匹配腾讯QQ号：[1-9][0-9]{4,}<br/>评注：腾讯QQ号从10000开始<br/><br/>匹配中国邮政编码：[1-9]&#92;d{5}(?!&#92;d)<br/>评注：中国邮政编码为6位数字<br/><br/>匹配身份证：&#92;d{15}&#124;&#92;d{18}<br/>评注：中国的身份证为15位或18位<br/><br/>匹配ip地址：&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+<br/>评注：提取ip地址时有用<br/><br/>匹配特定数字：<br/>^[1-9]&#92;d*$　 　 //匹配正整数<br/>^-[1-9]&#92;d*$ 　 //匹配负整数<br/>^-?[1-9]&#92;d*$　　 //匹配整数<br/>^[1-9]&#92;d*&#124;0$　 //匹配非负整数（正整数 + 0）<br/>^-[1-9]&#92;d*&#124;0$　　 //匹配非正整数（负整数 + 0）<br/>^[1-9]&#92;d*&#92;.&#92;d*&#124;0&#92;.&#92;d*[1-9]&#92;d*$　　 //匹配正浮点数<br/>^-([1-9]&#92;d*&#92;.&#92;d*&#124;0&#92;.&#92;d*[1-9]&#92;d*)$　 //匹配负浮点数<br/>^-?([1-9]&#92;d*&#92;.&#92;d*&#124;0&#92;.&#92;d*[1-9]&#92;d*&#124;0?&#92;.0+&#124;0)$　 //匹配浮点数<br/>^[1-9]&#92;d*&#92;.&#92;d*&#124;0&#92;.&#92;d*[1-9]&#92;d*&#124;0?&#92;.0+&#124;0$　　 //匹配非负浮点数（正浮点数 + 0）<br/>^(-([1-9]&#92;d*&#92;.&#92;d*&#124;0&#92;.&#92;d*[1-9]&#92;d*))&#124;0?&#92;.0+&#124;0$　　//匹配非正浮点数（负浮点数 + 0）<br/>评注：处理大量数据时有用，具体应用时注意修正<br/><br/>匹配特定字符串：<br/>^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串<br/>^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串<br/>^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串<br/>^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串<br/>^&#92;w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串<br/>评注：最基本也是最常用的一些表达式<br/><br/>许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符，必须首先使字符“转义”，即，将反斜杠字符 (&#92;) 放在它们前面。下表列出了特殊字符以及它们的含义：<br/><br/>$ 匹配输入字符串结尾的位置。<br/>如果设置了 RegExp 对象的 Multiline 属性，那么 $ 还匹配 &#92;n 或 &#92;r 前面的位置。若要匹配 $ 字符本身，请使用 &#92;$。 <br/><br/>( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。<br/>若要匹配这两个字符，请使用 &#92;( 和 &#92;)。 <br/><br/>* 零次或多次匹配前面的字符或子表达式。<br/>若要匹配 * 字符，请使用 &#92;*。 <br/><br/>+ 一次或多次匹配前面的字符或子表达式。<br/>若要匹配 + 字符，请使用 &#92;+。 <br/><br/>. 匹配除换行符 &#92;n 之外的任何单个字符。<br/>若要匹配 .，请使用 &#92;。 <br/><br/>[ ] 标记中括号表达式的开始。<br/>若要匹配这些字符，请使用 &#92;[ 和 &#92;]。 <br/><br/>? 零次或一次匹配前面的字符或子表达式，或指示“非贪心”限定符。<br/>若要匹配 ? 字符，请使用 &#92;?。 <br/><br/>&#92; 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。<br/>例如，字符 n 匹配字符 n。&#92;n 匹配换行符。序列 &#92;&#92; 匹配 &#92;，序列 &#92;( 匹配 (。 <br/><br/>/ 表示文本正则表达式的开始或结束。<br/>若要匹配 / 字符，请使用 &#92;/。 <br/><br/>^ 匹配输入字符串开始处的位置，但在中括号表达式中使用的情况除外，在那种情况下它对字符集求反。<br/>若要匹配 ^ 字符本身，请使用 &#92;^。<br/><br/>{ } 标记限定符表达式的开始。<br/>若要匹配这些字符，请使用 &#92;{ 和 &#92;}。 <br/><br/>&#124; 指出在两个项之间进行选择。<br/>若要匹配 &#124; ，请使用 &#92;&#124;<br/><br/>preg_match() 返回 pattern 所匹配的次数。要么是 0 次（没有匹配）或 1 次，因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反，会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。 <br/><br/>提示: <br/>如果只想查看一个字符串是否包含在另一个字符串中，不要用 preg_match()。可以用 strpos() 或 strstr() 替代，要快得多。 <br/><br/>例1609.在文本中搜索“php”<br/>copy to clipboard<br/>&lt;?php<br/>// 模式定界符后面的 &quot;i&quot; 表示不区分大小写字母的搜索<br/>if (preg_match (&quot;/php/i&quot;, &quot;PHP is the web scripting language of choice.&quot;)) {<br/>&nbsp;&nbsp; print &quot;A match was found.&quot;;<br/>} else {<br/>&nbsp;&nbsp; print &quot;A match was not found.&quot;;<br/>}<br/>?&gt;<br/>例1610.搜索单词“web”<br/>copy to clipboard<br/>&lt;?php<br/>/* 模式中的 &#92;b 表示单词的边界，因此只有独立的 &quot;web&quot; 单词会被匹配，<br/>* 而不会匹配例如 &quot;webbing&quot; 或 &quot;cobweb&quot; 中的一部分 */<br/>if (preg_match (&quot;/&#92;bweb&#92;b/i&quot;, &quot;PHP is the web scripting language of choice.&quot;)) {<br/>&nbsp;&nbsp; print &quot;A match was found.&quot;;<br/>} else {<br/>&nbsp;&nbsp; print &quot;A match was not found.&quot;;<br/>}<br/><br/>if (preg_match (&quot;/&#92;bweb&#92;b/i&quot;, &quot;PHP is the website scripting language of choice.&quot;)) {<br/>&nbsp;&nbsp; print &quot;A match was found.&quot;;<br/>} else {<br/>&nbsp;&nbsp; print &quot;A match was not found.&quot;;<br/>}<br/>?&gt;<br/>例1611.从 URL 中取出域名<br/>copy to clipboard<br/>&lt;?php<br/>// 从 URL 中取得主机名<br/>preg_match(&quot;/^(http:&#92;/&#92;/)?([^&#92;/]+)/i&quot;,<br/>&nbsp;&nbsp; &quot;http://www.php.net/index.html&quot;, $matches);<br/>$host = $matches[2];<br/><br/>// 从主机名中取得后面两段<br/>preg_match(&quot;/[^&#92;.&#92;/]+&#92;.[^&#92;.&#92;/]+$/&quot;, $host, $matches);<br/>echo &quot;domain name is: {$matches[0]}&#92;n&quot;;<br/>?&gt; <br/><br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 常用正则表达式]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>