<?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>Tue, 02 Dec 2008 13:02:21 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	匹配中文字符的正则表达式： [&#92;u4e00-&#92;u9fa5]&nbsp;&nbsp;<br/>评注：匹配中文还真是个头疼的事，有了这个表达式就好办了&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配双字节字符(包括汉字在内)：[^&#92;x00-&#92;xff]&nbsp;&nbsp;<br/>评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配空白行的正则表达式：&#92;n&#92;s*&#92;r&nbsp;&nbsp;<br/>评注：可以用来删除空白行&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配HTML标记的正则表达式： <(&#92;S*?)[^>]*>.*? ¦ <.*? />&nbsp;&nbsp;<br/>评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配首尾空白字符的正则表达式：^&#92;s* ¦&#92;s*$&nbsp;&nbsp;<br/>评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配Email地址的正则表达式：&#92;w+([-+.]&#92;w+)*@&#92;w+([-.]&#92;w+)*&#92;.&#92;w+([-.]&#92;w+)*&nbsp;&nbsp;<br/>评注：表单验证时很实用&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配网址URL的正则表达式：[a-zA-z]+://[^&#92;s]*&nbsp;&nbsp;<br/>评注：网上流传的版本功能很有限，上面这个基本可以满足需求&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]&#123;4,15&#125;$&nbsp;&nbsp;<br/>评注：表单验证时很实用&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配国内电话号码：&#92;d&#123;3&#125;-&#92;d&#123;8&#125; ¦&#92;d&#123;4&#125;-&#92;d&#123;7&#125;&nbsp;&nbsp;<br/>评注：匹配形式如 0511-4405222 或 021-87888822&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配腾讯QQ号：[1-9][0-9]&#123;4,&#125;&nbsp;&nbsp;<br/>评注：腾讯QQ号从10000开始&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配中国邮政编码：[1-9]&#92;d&#123;5&#125;(?!&#92;d)&nbsp;&nbsp;<br/>评注：中国邮政编码为6位数字&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配身份证：&#92;d&#123;15&#125; ¦&#92;d&#123;18&#125;&nbsp;&nbsp;<br/>评注：中国的身份证为15位或18位&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配ip地址：&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+&nbsp;&nbsp;<br/>评注：提取ip地址时有用&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配特定数字：&nbsp;&nbsp;<br/>^[1-9]&#92;d*$　 　 //匹配正整数&nbsp;&nbsp;<br/>^-[1-9]&#92;d*$ 　 //匹配负整数&nbsp;&nbsp;<br/>^-?[1-9]&#92;d*$　　 //匹配整数&nbsp;&nbsp;<br/>^[1-9]&#92;d* ¦0$　 //匹配非负整数（正整数 + 0）&nbsp;&nbsp;<br/>^-[1-9]&#92;d* ¦0$　　 //匹配非正整数（负整数 + 0）&nbsp;&nbsp;<br/>^[1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*$　　 //匹配正浮点数&nbsp;&nbsp;<br/>^-([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*)$　 //匹配负浮点数&nbsp;&nbsp;<br/>^-?([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d* ¦0?&#92;.0+ ¦0)$　 //匹配浮点数&nbsp;&nbsp;<br/>^[1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d* ¦0?&#92;.0+ ¦0$　　 //匹配非负浮点数（正浮点数 + 0）&nbsp;&nbsp;<br/>^(-([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*)) ¦0?&#92;.0+ ¦0$　　//匹配非正浮点数（负浮点数 + 0）&nbsp;&nbsp;<br/>评注：处理大量数据时有用，具体应用时注意修正&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>匹配特定字符串：&nbsp;&nbsp;<br/>^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串&nbsp;&nbsp;<br/>^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串&nbsp;&nbsp;<br/>^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串&nbsp;&nbsp;<br/>^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串&nbsp;&nbsp;<br/>^&#92;w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串&nbsp;&nbsp;<br/>"^[&#92;&#92;w-]+(&#92;&#92;.[&#92;&#92;w-]+)*@[&#92;&#92;w-]+(&#92;&#92;.[&#92;&#92;w-]+)+___FCKpd___0quot;　　　　//email地址&nbsp;&nbsp; <br/>"^[a-zA-z]+://(&#92;&#92;w+(-&#92;&#92;w+)*)(&#92;&#92;.(&#92;&#92;w+(-&#92;&#92;w+)*))*(&#92;&#92;?&#92;&#92;S*)?___FCKpd___0quot;　　//url&nbsp;&nbsp;<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标记的正则表达式： <(&#92;S*?)[^>]*>.*? ¦ <.*? /><br/>评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力<br/><br/>匹配首尾空白字符的正则表达式：^&#92;s* ¦&#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_]&#123;4,15&#125;$<br/>评注：表单验证时很实用<br/><br/>匹配国内电话号码：&#92;d&#123;3&#125;-&#92;d&#123;8&#125; ¦&#92;d&#123;4&#125;-&#92;d&#123;7&#125;<br/>评注：匹配形式如 0511-4405222 或 021-87888822<br/><br/>匹配腾讯QQ号：[1-9][0-9]&#123;4,&#125;<br/>评注：腾讯QQ号从10000开始<br/><br/>匹配中国邮政编码：[1-9]&#92;d&#123;5&#125;(?!&#92;d)<br/>评注：中国邮政编码为6位数字<br/><br/>匹配身份证：&#92;d&#123;15&#125; ¦&#92;d&#123;18&#125;<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* ¦0$　 //匹配非负整数（正整数 + 0）<br/>^-[1-9]&#92;d* ¦0$　　 //匹配非正整数（负整数 + 0）<br/>^[1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*$　　 //匹配正浮点数<br/>^-([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*)$　 //匹配负浮点数<br/>^-?([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d* ¦0?&#92;.0+ ¦0)$　 //匹配浮点数<br/>^[1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d* ¦0?&#92;.0+ ¦0$　　 //匹配非负浮点数（正浮点数 + 0）<br/>^(-([1-9]&#92;d*&#92;.&#92;d* ¦0&#92;.&#92;d*[1-9]&#92;d*)) ¦0?&#92;.0+ ¦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/>"^[&#92;&#92;w-]+(&#92;&#92;.[&#92;&#92;w-]+)*@[&#92;&#92;w-]+(&#92;&#92;.[&#92;&#92;w-]+)+___FCKpd___0quot;　　　　//email地址<br/>"^[a-zA-z]+://(&#92;&#92;w+(-&#92;&#92;w+)*)(&#92;&#92;.(&#92;&#92;w+(-&#92;&#92;w+)*))*(&#92;&#92;?&#92;&#92;S*)?___FCKpd___0quot;　　//urlview plaincopy to clipboardprint?<br/>正则几个基本概念：&nbsp;&nbsp;<br/><br/>正则几个基本概念：view plaincopy to clipboardprint?<br/>1.贪婪：+,*,?,&#123;m,n&#125;等默认是贪婪匹配，即尽可能多匹配，也叫最大匹配&nbsp;&nbsp;<br/>如果后面加上?，就转化为非贪婪匹配，需要高版本支持&nbsp;&nbsp;<br/><br/>1.贪婪：+,*,?,&#123;m,n&#125;等默认是贪婪匹配，即尽可能多匹配，也叫最大匹配<br/>如果后面加上?，就转化为非贪婪匹配，需要高版本支持view plaincopy to clipboardprint?<br/>2.获取：默认用(x ¦y)是获取匹配，很多时候只是测试，不一定要求得到所匹配的数据，尤其在嵌套匹配或大数据中就要用非获取匹配(?:x ¦y)，这样提高了效率，优化了程序。&nbsp;&nbsp;<br/><br/>2.获取：默认用(x ¦y)是获取匹配，很多时候只是测试，不一定要求得到所匹配的数据，尤其在嵌套匹配或大数据中就要用非获取匹配(?:x ¦y)，这样提高了效率，优化了程序。view plaincopy to clipboardprint?<br/>3.消耗：默认是消耗匹配，一般在预查中是非消耗匹配。&nbsp;&nbsp;<br/>举个例子，2003-2-8要变为2003-02-08&nbsp;&nbsp;<br/>如果用/-(&#92;d)-/第二次匹配将从8开始，从而只替换第一个2，错误&nbsp;&nbsp;<br/>如果用/-(&#92;d)(?=-)/则第二次匹配从第二个-开始，即不消耗字符-&nbsp;&nbsp;<br/><br/>3.消耗：默认是消耗匹配，一般在预查中是非消耗匹配。<br/>举个例子，2003-2-8要变为2003-02-08<br/>如果用/-(&#92;d)-/第二次匹配将从8开始，从而只替换第一个2，错误<br/>如果用/-(&#92;d)(?=-)/则第二次匹配从第二个-开始，即不消耗字符-view plaincopy to clipboardprint?<br/>4.预查：js中分为正向预查和负向预查&nbsp;&nbsp;<br/>如上面的(?=pattern)是正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。还有(?!pattern)是负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。负向预查有时会用在对[^]的扩充，[^]只是一些字符，而?!可以使整个字符串。&nbsp;&nbsp;<br/><br/>4.预查：js中分为正向预查和负向预查<br/>如上面的(?=pattern)是正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。还有(?!pattern)是负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。负向预查有时会用在对[^]的扩充，[^]只是一些字符，而?!可以使整个字符串。view plaincopy to clipboardprint?<br/>5.回调：一般用在替换上，即根据不用的匹配内容返回不用的替换值，从而简化了程序，需要高版本支持&nbsp;&nbsp;<br/><br/>5.回调：一般用在替换上，即根据不用的匹配内容返回不用的替换值，从而简化了程序，需要高版本支持view plaincopy to clipboardprint?<br/>6.引用：&#92;num 对所获取的第num个匹配的引用。&nbsp;&nbsp;<br/>例如，'(.)&#92;1&#92;1' 匹配AAA型。'(.)(.)&#92;2&#92;1' 匹配ABBA型。&nbsp;&nbsp;<br/><br/>6.引用：&#92;num 对所获取的第num个匹配的引用。<br/>例如，'(.)&#92;1&#92;1' 匹配AAA型。'(.)(.)&#92;2&#92;1' 匹配ABBA型。view plaincopy to clipboardprint?<br/>正则表达式保留字&nbsp;&nbsp;<br/>^ (carat)&nbsp;&nbsp; <br/>. (period)&nbsp;&nbsp; <br/>[ (left bracket&#125;&nbsp;&nbsp; <br/>$ (dollar sign)&nbsp;&nbsp; <br/>( (left parenthesis)&nbsp;&nbsp; <br/>) (right parenthesis)&nbsp;&nbsp; <br/>¦ (pipe)&nbsp;&nbsp; <br/>* (asterisk)&nbsp;&nbsp; <br/>+ (plus symbol)&nbsp;&nbsp; <br/>? (question mark)&nbsp;&nbsp; <br/>&#123; (left curly bracket, or left brace)&nbsp;&nbsp; <br/>&#92; backslash&nbsp;&nbsp;<br/><br/>正则表达式保留字<br/>^ (carat)<br/>. (period)<br/>[ (left bracket&#125;<br/>$ (dollar sign)<br/>( (left parenthesis)<br/>) (right parenthesis)<br/>¦ (pipe)<br/>* (asterisk)<br/>+ (plus symbol)<br/>? (question mark)<br/>&#123; (left curly bracket, or left brace)<br/>&#92; backslash view plaincopy to clipboardprint?<br/>构造 匹配于&nbsp;&nbsp;<br/><br/>构造 匹配于 view plaincopy to clipboardprint?<br/>字符&nbsp;&nbsp; <br/>x 字符 x&nbsp;&nbsp; <br/>&#92;&#92; 反斜线字符&nbsp;&nbsp; <br/>&#92;0n 八进制值的字符0n (0 <= n <= 7)&nbsp;&nbsp; <br/>&#92;0nn 八进制值的字符 0nn (0 <= n <= 7)&nbsp;&nbsp; <br/>&#92;0mnn 八进制值的字符0mnn 0mnn (0 <= m <= 3, 0 <= n <= 7)&nbsp;&nbsp; <br/>&#92;xhh 十六进制值的字符0xhh&nbsp;&nbsp; <br/>&#92;uhhhh 十六进制值的字符0xhhhh&nbsp;&nbsp; <br/>&#92;t 制表符('&#92;u0009')&nbsp;&nbsp; <br/>&#92;n 换行符 ('&#92;u000A')&nbsp;&nbsp; <br/>&#92;r 回车符 ('&#92;u000D')&nbsp;&nbsp; <br/>&#92;f 换页符 ('&#92;u000C')&nbsp;&nbsp; <br/>&#92;a 响铃符 ('&#92;u0007')&nbsp;&nbsp; <br/>&#92;e 转义符 ('&#92;u001B')&nbsp;&nbsp; <br/>&#92;cx T对应于x的控制字符 x&nbsp;&nbsp;<br/><br/>字符<br/>x 字符 x<br/>&#92;&#92; 反斜线字符<br/>&#92;0n 八进制值的字符0n (0 <= n <= 7)<br/>&#92;0nn 八进制值的字符 0nn (0 <= n <= 7)<br/>&#92;0mnn 八进制值的字符0mnn 0mnn (0 <= m <= 3, 0 <= n <= 7)<br/>&#92;xhh 十六进制值的字符0xhh<br/>&#92;uhhhh 十六进制值的字符0xhhhh<br/>&#92;t 制表符('&#92;u0009')<br/>&#92;n 换行符 ('&#92;u000A')<br/>&#92;r 回车符 ('&#92;u000D')<br/>&#92;f 换页符 ('&#92;u000C')<br/>&#92;a 响铃符 ('&#92;u0007')<br/>&#92;e 转义符 ('&#92;u001B')<br/>&#92;cx T对应于x的控制字符 x view plaincopy to clipboardprint?<br/>字符类&nbsp;&nbsp; <br/>[abc] a, b, or c (简单类)&nbsp;&nbsp; <br/>[^abc] 除了a、b或c之外的任意 字符（求反）&nbsp;&nbsp; <br/>[a-zA-Z] a到z或A到Z ，包含（范围)&nbsp;&nbsp; <br/>[a-z-[bc]] a到z，除了b和c ： [ad-z]（减去）&nbsp;&nbsp; <br/>[a-z-[m-p]] a到z，除了m到 p： [a-lq-z]&nbsp;&nbsp; <br/>[a-z-[^def]] d, e, 或 f&nbsp;&nbsp;<br/><br/>字符类<br/>[abc] a, b, or c (简单类)<br/>[^abc] 除了a、b或c之外的任意 字符（求反）<br/>[a-zA-Z] a到z或A到Z ，包含（范围)<br/>[a-z-[bc]] a到z，除了b和c ： [ad-z]（减去）<br/>[a-z-[m-p]] a到z，除了m到 p： [a-lq-z]<br/>[a-z-[^def]] d, e, 或 f view plaincopy to clipboardprint?<br/>预定义的字符类&nbsp;&nbsp; <br/>. 任意字符（也许能与行终止符匹配，也许不能）&nbsp;&nbsp; <br/>&#92;d 数字: [0-9]&nbsp;&nbsp; <br/>&#92;D 非数字: [^0-9]&nbsp;&nbsp; <br/>&#92;s 空格符: [ &#92;t&#92;n&#92;x0B&#92;f&#92;r]&nbsp;&nbsp; <br/>&#92;S 非空格符: [^&#92;s]&nbsp;&nbsp; <br/>&#92;w 单词字符: [a-zA-Z_0-9]&nbsp;&nbsp; <br/>&#92;W 非单词字符: [^&#92;w]
]]>
</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>