<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>米飯三文志 &#187; ◎ JavaScript</title>
	<atom:link href="http://www.mrkelly.org/category/pc%e6%ad%b7%e9%9a%aa%e8%a8%98/%e2%97%8e-javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mrkelly.org</link>
	<description>Mr.kelly &#039;s Blog - 糜爛生活之外的愛與關注</description>
	<lastBuildDate>Thu, 28 Jan 2010 01:39:00 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>常用的JavaScript验证正则表达式</title>
		<link>http://www.mrkelly.org/2009/10/19/%e5%b8%b8%e7%94%a8%e7%9a%84javascript%e9%aa%8c%e8%af%81%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/</link>
		<comments>http://www.mrkelly.org/2009/10/19/%e5%b8%b8%e7%94%a8%e7%9a%84javascript%e9%aa%8c%e8%af%81%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 15:09:55 +0000</pubDate>
		<dc:creator>mrkelly</dc:creator>
				<category><![CDATA[◎ JavaScript]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RegEx]]></category>

		<guid isPermaLink="false">http://www.mrkelly.org/?p=166</guid>
		<description><![CDATA[JavaScirpt RegEx 正则表达式]]></description>
			<content:encoded><![CDATA[<p>转载一篇《<a href="http://www.ccvita.com/61.html">常用的JavaScript验证正则表达式</a>》</p>
<p>今天用在处理限制10个学号的字符处理问题。</p>
<blockquote><p>下面都是我收集的一些比较常用的正则表达式，因为平常可能在表单验证的时候，用到的比较多。特发出来，让各位朋友共同使用。呵呵。</p>
<p>匹配中文字符的正则表达式： [u4e00-u9fa5]<br />
评注：匹配中文还真是个头疼的事，有了这个表达式就好办了</p>
<p>匹配双字节字符(包括汉字在内)：[^x00-xff]<br />
评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）</p>
<p>匹配空白行的正则表达式：ns*r<br />
评注：可以用来删除空白行</p>
<p>匹配HTML标记的正则表达式：&lt; (S*?)[^&gt;]*&gt;.*?|&lt; .*? /&gt;<br />
评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力</p>
<p>匹配首尾空白字符的正则表达式：^s*|s*$<br />
评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式<span id="more-166"></span></p>
<p><span id="more-61"> </span></p>
<p><code><br />
匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*<br />
评注：表单验证时很实用</code></p>
<p>匹配网址URL的正则表达式：[a-zA-z]+://[^s]*<br />
评注：网上流传的版本功能很有限，上面这个基本可以满足需求</p>
<p>匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />
评注：表单验证时很实用</p>
<p>匹配国内电话号码：d{3}-d{8}|d{4}-d{7}<br />
评注：匹配形式如 0511-4405222 或 021-87888822</p>
<p>匹配腾讯QQ号：[1-9][0-9]{4,}<br />
评注：腾讯QQ号从10000开始</p>
<p>匹配中国邮政编码：[1-9]d{5}(?!d)<br />
评注：中国邮政编码为6位数字</p>
<p>匹配身份证：d{15}|d{18}<br />
评注：中国的身份证为15位或18位</p>
<p>匹配ip地址：d+.d+.d+.d+<br />
评注：提取ip地址时有用</p>
<p>匹配特定数字：<br />
^[1-9]d*$　 　 //匹配正整数<br />
^-[1-9]d*$ 　 //匹配负整数<br />
^-?[1-9]d*$　　 //匹配整数<br />
^[1-9]d*|0$　 //匹配非负整数（正整数 + 0）<br />
^-[1-9]d*|0$　　 //匹配非正整数（负整数 + 0）<br />
^[1-9]d*.d*|0.d*[1-9]d*$　　 //匹配正浮点数<br />
^-([1-9]d*.d*|0.d*[1-9]d*)$　 //匹配负浮点数<br />
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$　 //匹配浮点数<br />
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$　　 //匹配非负浮点数（正浮点数 + 0）<br />
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$　　//匹配非正浮点数（负浮点数 + 0）<br />
评注：处理大量数据时有用，具体应用时注意修正</p>
<p>匹配特定字符串：<br />
^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串<br />
^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串<br />
^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串<br />
^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串<br />
^w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串</p>
<p>在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:</p>
<p>只能输入数字：“^[0-9]*$”<br />
只能输入n位的数字：“^d{n}$”<br />
只能输入至少n位数字：“^d{n,}$”<br />
只能输入m-n位的数字：“^d{m,n}$”<br />
只能输入零和非零开头的数字：“^(0|[1-9][0-9]*)$”<br />
只能输入有两位小数的正实数：“^[0-9]+(.[0-9]{2})?$”<br />
只能输入有1-3位小数的正实数：“^[0-9]+(.[0-9]{1,3})?$”<br />
只能输入非零的正整数：“^+?[1-9][0-9]*$”<br />
只能输入非零的负整数：“^-[1-9][0-9]*$”<br />
只能输入长度为3的字符：“^.{3}$”<br />
只能输入由26个英文字母组成的字符串：“^[A-Za-z]+$”<br />
只能输入由26个大写英文字母组成的字符串：“^[A-Z]+$”<br />
只能输入由26个小写英文字母组成的字符串：“^[a-z]+$”<br />
只能输入由数字和26个英文字母组成的字符串：“^[A-Za-z0-9]+$”<br />
只能输入由数字、26个英文字母或者下划线组成的字符串：“^w+$”<br />
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为：以字母开头，长度在6-18之间，</p>
<p>只能包含字符、数字和下划线。<br />
验证是否含有^%&amp;’,;=?$”等字符：“[^%&amp;',;=?$x22]+”<br />
只能输入汉字：“^[u4e00-u9fa5],{0,}$”<br />
验证Email地址：“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”<br />
验证InternetURL：“^http://([w-]+.)+[w-]+(/[w-./?%&amp;=]*)?$”<br />
验证电话号码：“^((d{3,4})|d{3,4}-)?d{7,8}$”</p>
<p>正确格式为：“XXXX-XXXXXXX”，“XXXX-XXXXXXXX”，“XXX-XXXXXXX”，</p>
<p>“XXX-XXXXXXXX”，“XXXXXXX”，“XXXXXXXX”。<br />
验证身份证号（15位或18位数字）：“^d{15}|d{}18$”<br />
验证一年的12个月：“^(0?[1-9]|1[0-2])$”正确格式为：“01”-“09”和“1”“12”<br />
验证一个月的31天：“^((0?[1-9])|((1|2)[0-9])|30|31)$”</p>
<p>正确格式为：“01”“09”和“1”“31”。</p>
<p>匹配中文字符的正则表达式： [u4e00-u9fa5]<br />
匹配双字节字符(包括汉字在内)：[^x00-xff]<br />
匹配空行的正则表达式：n[s| ]*r<br />
匹配HTML标记的正则表达式：/&lt; (.*)&gt;.*|&lt; (.*) /&gt;/<br />
匹配首尾空格的正则表达式：(^s*)|(s*$)<br />
匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*<br />
匹配网址URL的正则表达式：http://([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)?</p>
<p>(1)应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br />
String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}</p>
<p>(2)应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现<br />
String.prototype.trim = function()<br />
{<br />
return this.replace(/(^s*)|(s*$)/g, “”);<br />
}<br />
(3)应用：利用正则表达式分解和转换IP地址<br />
function IP2V(ip) //IP地址转换成对应数值<br />
{<br />
re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式<br />
if(re.test(ip))<br />
{<br />
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1<br />
}<br />
else<br />
{<br />
throw new Error(”Not a valid IP address!”)<br />
}<br />
}<br />
(4)应用：从URL地址中提取文件名的javascript程序<br />
s=”http://www.9499.net/page1.htm”;<br />
s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ; //Page1.htm<br />
(5)应用：利用正则表达式限制网页表单里的文本框输入内容<br />
用正则表达式限制只能输入中文：onkeyup=”value=”/blog/value.replace(/["^u4E00-u9FA5]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))”<br />
用正则表达式限制只能输入全角字符： onkeyup=”value=”/blog/value.replace(/["^uFF00-uFFFF]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))”<br />
用正则表达式限制只能输入数字：onkeyup=”value=”/blog/value.replace(/["^d]/g,”) “onbeforepaste= “clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))”<br />
用正则表达式限制只能输入数字和英文：onkeyup=”value=”/blog/value.replace(/[W]/g,””) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.mrkelly.org/2009/10/19/%e5%b8%b8%e7%94%a8%e7%9a%84javascript%e9%aa%8c%e8%af%81%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
