<?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>Kily&#039;s Blog &#187; 正则表达式</title>
	<atom:link href="http://www.keelii.com/tag/regularexpression/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.keelii.com</link>
	<description>calls me kily</description>
	<lastBuildDate>Fri, 03 Feb 2012 08:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaScript 正则表达式学习笔记&lt;2&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-two/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-two/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 11:23:23 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-two/</guid>
		<description><![CDATA[那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。 1.String对象的replace()方法 String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如： var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成# alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11### //要替换所有的-号我们可以用正则了 alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式 alert(s.replace(/-/g,”#”));  //这样就可以将字符串的所有的-替换成#了 //如果我想把目标字符串替换成#Hello11#该怎样写正则呢？ alert(s.replace(/-+/g,”#”));  //+是什么作用请查上篇笔记 String对象正则实现trim（去空格）效果 var s = “   Hello   “; alert(“&#124;”+s.replace(/^\s+/,”")+”&#124;”);  //替换前面的多个空格：^ alert(“&#124;”+s.replace(/\s+$/,”")+”&#124;”);  //替换后面的多个空格：$  注：加上“&#124;”易辨认 //整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格 function trim(s){ var re1 = /^\s+/,re2 = /\s+$/; s= &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-two/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-two" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningparttwo.jpg" alt="js-regular-expression-learning-part-two" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。</p>
<p><span id="more-1595"></span></p>
<h3>1.String对象的replace()方法</h3>
<p>String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如：</p>
<blockquote><p>var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成#<br />
alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11###<br />
//要替换所有的-号我们可以用正则了<br />
alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式<br />
alert(s.replace(/-/<span style="color: #ff0000;">g</span>,”#”));  //这样就可以将字符串的所有的-替换成#了<br />
//如果我想把目标字符串替换成#Hello11#该怎样写正则呢？<br />
alert(s.replace(/-<span style="color: #ff0000;">+</span>/g,”#”));  //+是什么作用请查上篇笔记</p></blockquote>
<p>String对象正则实现trim（去空格）效果</p>
<blockquote><p>var s = “   Hello   “;<br />
alert(“|”+s.replace(/^\s+/,”")+”|”);  //替换前面的多个空格：^<br />
alert(“|”+s.replace(/\s+$/,”")+”|”);  //替换后面的多个空格：$  注：加上“|”易辨认<br />
//整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格<br />
function trim(s){<br />
var re1 = /^\s+/,re2 = /\s+$/;<br />
s= s.replace(replace(),”");<br />
return s.replace(re2,”");<br />
}</p></blockquote>
<h3>2.String对象的split()方法</h3>
<p>此方法将目标字符串用某字符分割开，并返回一个数组对象。基本用法如下：</p>
<blockquote><p>var s = “12,34,56&#8243;;<br />
var arrs = s.split(“,”)<br />
alert(arrs[0]+”\n”+arrs[1]+”\n”+arrs[2]);</p></blockquote>
<p><strong>小扩展</strong>：当目标字符串是用户输入的一些字符，比如生日。我们该如何分别获取他的年、月、日。</p>
<blockquote><p>var s = “1988-8-8&#8243;;   //这里是用户输入的数据<br />
var date = s.split(“-”);<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<p>对于一些“不按常理出牌”的用户，我们可以用正则去搞定，比如：</p>
<blockquote><p>var s = “1988- 8 -*8&#8243;;  //比如用户这样输入了数据<br />
var date = s.split(/[^0-9]+/);  //脱字符^放在[]中间表示匹配相反内容<br />
//这个正则表示匹配多个非数字字符，用其分割<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<h3>3.String对象的search()方法</h3>
<p>这个方法表示查找字符串中与之匹配的字符并返回其下标值，没找到匹配值时返回-1 。比如：</p>
<blockquote><p>var s = “My age is 18.”;<br />
alert(s.search(“1&#8243;));//返回10,search方法与indexof方法的区别在于search可以使用正则</p></blockquote>
<h3>4.String对象的match()方法</h3>
<p>这个方法类似于正则中的exec方法，如：</p>
<blockquote><p>var s = “Ubuntu 8.10&#8243;;<br />
var re = /^([a-z]+)\s+(\d+)\.(\d+)/i; //正则中的.表示匹配任意字符，这里要转义它<br />
var arrs = s.match(re);<br />
alert(“name:”+arrs[1]+”\nversion:”+arrs[2]+”\nsub-version:”+arrs[3]);</p></blockquote>
<p>休息一下..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-two/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaScript正则表达式学习笔记&lt;1&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-one/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-one/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 04:38:46 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-one/</guid>
		<description><![CDATA[刚刚收到李炎恢老师的弟子CJ写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话点击这里。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。 1.什么是正则表达式 正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。 关于元字符与匹配内容可以参考这张表：正则匹配表 2.怎么创建正则表达式 var re = new RegExp();//RegExp是一个对象,和Aarray一样 //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去 re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a 可简写为“var re = /a/” re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写 RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如： g （全文查找） i （忽略大小写） m （多行查找） var re = new RegExp(“a”,”gi”); //匹配所有的a或A。可简写为“var re = /a/gi” 3.正则表达式对象的方法 &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-one/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-one" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningpartone.jpg" alt="js-regular-expression-learning-part-one" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>刚刚收到李炎恢老师的弟子<a href="http://www.pl4cj.org/blog/" target="_blank">CJ</a>写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话<a href="http://hi.baidu.com/%C0%EE%D1%D7%BB%D6/blog/item/d8d6683fbcf925f7828b138d.html" target="_blank">点击这里</a>。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。</p>
<p><span id="more-1593"></span></p>
<h3>1.什么是正则表达式</h3>
<p>正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。</p>
<p id="retable">关于元字符与匹配内容可以参考这张表：<a href="http://www.keelii.com/learning/js-learning/js-re-table.html">正则匹配表</a></p>
<h3>2.怎么创建正则表达式</h3>
<blockquote><p>var re = new RegExp();//RegExp是一个对象,和Aarray一样<br />
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去<br />
re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a <span style="color: #ff0000;">可简写为“var re = /a/”</span><br />
re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写</p></blockquote>
<p>RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如：</p>
<ul>
<li>g （全文查找）</li>
<li>i （忽略大小写）</li>
<li>m （多行查找）</li>
</ul>
<blockquote><p>var re = new RegExp(“a”,”gi”);<br />
//匹配所有的a或A。<span style="color: #ff0000;">可简写为“var re = /a/gi”</span></p></blockquote>
<h3>3.正则表达式对象的方法</h3>
<p>三种方法分别是test，exec，compile：</p>
<ul>
<li>test：返回一个Boolean值，它指出在被查找的字符串中是否存在模式。</li>
<li>exec：用正则表达式模式在字符串中运行查找，并返回包含该查找结果的一个数组。</li>
<li>compile：把正则表达式编译为内部格式，从而执行得更快。</li>
</ul>
<h3>4.正则表达式的属性</h3>
<p>常用的有以下几种：</p>
<ul>
<li>source：返回表达式文本的复本。只读。</li>
<li>lastIndex：返回字符位置，它是被查找字符串中下一次成功匹配的开始位置。</li>
<li>$1…$9：返回九个在模式匹配期间找到的、最近保存的部分。只读。</li>
<li>input ($_)：返回执行规范表述查找的字符串。只读。</li>
<li>lastMatch ($&amp;)：返回任何正则表达式搜索过程中的最后匹配字符。只读。</li>
<li>leftContext ($`) ：返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。</li>
<li>rightContext ($&#8217;) 返回被搜索的客串中从最后一个匹配位置开始到字符串结尾之间的字符。只读</li>
</ul>
<h3>5.动手测试正则表达式是如何工作的</h3>
<p>用test方法测试是否匹配模式：</p>
<blockquote><p>var re = /he/;        //最简单的正则表达式,将匹配he这个单词<br />
var str = “he”;<br />
alert(re.test(str));  //用test方法测试是否匹配，返回true<br />
str = “we”;<br />
alert(re.test(str));  //false<br />
str = “HE”;<br />
alert(re.test(str));  //false<br />
re = /he/i;           //加上可选标识i(ignoreCase)来忽略大小写<br />
alert(re.test(str));  //true<br />
str = “yeah~he loves her”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>脱字符（^）开头匹配：（<a href="#retable">查表看看什么是脱字符</a>）</p>
<blockquote><p>re = /^he/i;<br />
alert(re.test(str));  //false,因为he不在str最开始<br />
str = “He is a good guy!”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>美元符（$）末尾匹配：</p>
<blockquote><p>re = /^he$/i;         //$表示字符结束位置<br />
alert(re.test(str));  //返回false说明”he is a good guy”不是以he结尾<br />
str = “He”;<br />
alert(re.test(str));  //返回true</p></blockquote>
<p>（\s）空白字符匹配：（包括空格，制表符，换行，换页等）</p>
<blockquote><p>str = “user Name”;<br />
re = /\s/;<br />
alert(re.test(str));  //str=”user\nName”也将返回true</p></blockquote>
<p>方括号（[ ]）范围匹配：</p>
<blockquote><p>re = /^[a-z]/i;        //匹配开头为a~z中任意字符并且不区分大小写<br />
str = “variableName”;<br />
alert(re.test(str));  //true<br />
str = “123variableName”;<br />
alert(re.test(str));  //false</p></blockquote>
<p>用exec方法测试哪些字符匹配了模式：</p>
<blockquote><p>var osVersion = “Ubuntu 8&#8243;;<br />
var re = /^[a-z]+\s+\d+$/i;  //+表示字符至少出现1次，\d表示一个数字<br />
//这个正则表示：匹配 以a~z中任意字母为开头、至少有一个空白字符、至少有一个数字结尾的字符串<br />
alert(re.test(osVersion));   //true<br />
re = /^[a-z]+\s+\d+$/i;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //将osVersion完整，因为它刚好匹配re<br />
//我们只想取出数字..<br />
re=/\d+/;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //返回8</p></blockquote>
<p>复杂一点的子匹配：</p>
<blockquote><p>re = /^[a-z]+\s+(\d+)$/i;    //用()来创建子匹配<br />
arr = re.exec(osVersion);<br />
alert(arr[0]+”\n”+arr[1]);   //arr[1]为第一个子匹配也就是版本号8<br />
osVersion = “Ubuntu 8.10&#8243;;<br />
re = /^[a-z]+\s+(\d+)\.(\d+)$/i;    //.是正则中的元字符需要转义即“\.”表示输出一个.号<br />
arr = re.exec(osVersion);<br />
alert(“完整版本：”+arr[0]+”\n大版本号：”+arr[1]+”\n字版本号：”+arr[2]);</p></blockquote>
<p>休息一下精彩继续&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-one/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>

