﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-XZC.Log-随笔分类-XML</title><link>http://www.blogjava.net/xzclog/category/17318.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 09 Jul 2011 04:31:52 GMT</lastBuildDate><pubDate>Sat, 09 Jul 2011 04:31:52 GMT</pubDate><ttl>60</ttl><item><title>js 高级编程</title><link>http://www.blogjava.net/xzclog/archive/2011/07/09/353978.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Sat, 09 Jul 2011 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2011/07/09/353978.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/353978.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2011/07/09/353978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/353978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/353978.html</trackback:ping><description><![CDATA[<div class="mcnt ztag">
<div class="nbw-bitm bdwb bds2 bdc0 ">
<div></div>
<div class="bct fc05 fc11 nbw-blog ztag js-fs2">
<p>研究发现：属性（变量）可分为三类（对象属性、全局变量和局部变量）<br />对象属性：声明时以&#8220;this.&#8221;开头，只能被&#8220;类的实例&#8221;即对象所调用，不能被&#8220;类内部（对外不对内）&#8221;调用；全局变量：声明时直接以变量名开头，可以任意调用（对内对外）；局部变量：只能被</p>
<p>&#8220;类内部（对内不对外）&#8221;调用。</p>
<p>&nbsp;</p>
<p>JS函数的声明与访问原理</p>
<p>&lt;script type="text/javas<wbr>cript"&gt;&nbsp;&nbsp; <br />//类&nbsp;&nbsp; <br />var testClass = function(){&nbsp;&nbsp; <br />&nbsp; //对象属性(对外不对内,类调用)&nbsp;&nbsp; <br />&nbsp; this.age ="25";&nbsp;&nbsp; <br />&nbsp; //全局变量(对内对外)&nbsp;&nbsp; <br />&nbsp; name="jack";&nbsp;&nbsp; <br />&nbsp; //局部变量(对内不对外)<br />&nbsp; var address = "beijing";<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp; //全局函数（对内对外）&nbsp;&nbsp; <br />&nbsp; add = function(a,b){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; //可访问：全局变量和局部变量&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; multiply(a,b);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; return a+b;&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp; <br />&nbsp; //实例函数（由类的对象调用）&nbsp;&nbsp; <br />&nbsp; this.minus = function(a,b){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; //可以访问：对象属性、全局变量和局部变量&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; return a-b;&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp; <br />&nbsp; //局部函数（内部直接调用）&nbsp;&nbsp; <br />&nbsp; var multiply = function(a,b){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; //只能访问：全局变量和局部变量&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; return a*b;&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />&nbsp; <br />&nbsp; <br />//类函数（由类名直接调用）&nbsp;&nbsp; <br />testClass.talk= function(){&nbsp;&nbsp; <br />&nbsp; //只能访问：全局变量和全局函数&nbsp;&nbsp; <br />&nbsp; this.what = function(){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; alert("What can we talk about?");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; about();&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp; var about = function(){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; alert("about name："+name);<br />&nbsp;&nbsp;&nbsp; alert("about add(1,1):"+add(1,1));<br />&nbsp; }&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />&nbsp; <br />&nbsp; <br />//原型函数(由类的对象调用)&nbsp;&nbsp; <br />testClass.prototype.walk = function(){&nbsp;&nbsp; <br />&nbsp; //只能访问:全局变量和全局函数&nbsp;&nbsp; <br />&nbsp; this.where = function(){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; alert("Where can we go?");<br />&nbsp;&nbsp;&nbsp; go();&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp; var go = function(){&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; alert("go name:"+name);&nbsp; <br />&nbsp;&nbsp;&nbsp; alert("go add(1,1):"+add(1,1));<br />&nbsp; }&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />&lt;/script&gt;&nbsp; </p>
<p><br />下面看看如何调用: </p>
<p>&lt;script type="text/javas<wbr>cript"&gt;&nbsp;&nbsp; <br />//获取一个cbs类的实例&nbsp;&nbsp; <br />var cbs= new testClass();&nbsp;&nbsp; <br />//调用类的对象属性age&nbsp;&nbsp; <br />alert("age:"+cbs.age);&nbsp;&nbsp; <br />&nbsp; <br />//获取类函数talk的实例&nbsp;&nbsp; <br />var talk = new testClass.talk();<br />//调用类函数的实例函数&nbsp;&nbsp; <br />talk.what();&nbsp;&nbsp; <br />&nbsp; <br />//获取原型函数walk的实例&nbsp;&nbsp; <br />var walk = new cbs.walk();&nbsp;&nbsp; <br />//调用原型函数的实例函数&nbsp;&nbsp; <br />walk.where();&nbsp;&nbsp; <br />&lt;/script&gt;&nbsp;</p></div></div></div><img src ="http://www.blogjava.net/xzclog/aggbug/353978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2011-07-09 11:34 <a href="http://www.blogjava.net/xzclog/archive/2011/07/09/353978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当Ajax遭遇GBK编码 (完全解决方案) </title><link>http://www.blogjava.net/xzclog/archive/2011/06/21/352729.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Tue, 21 Jun 2011 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2011/06/21/352729.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/352729.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2011/06/21/352729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/352729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/352729.html</trackback:ping><description><![CDATA[<div><span class="Apple-style-span" style="font-size: 15px; line-height: 19px; font-family: Arial, Helvetica, sans-serif; background-color: #ffffff">&nbsp; 
<p style="margin-top: 0px; margin-bottom: 0px">
<div>[原文:&nbsp;<a href="http://www.imxylz.info/wiki/Java/AjaxGBK">http://www.imxylz.info/wiki/Java/AjaxGBK</a>&nbsp;]<br /></div>早起的国内互联网都使用GBK编码，久之，所有项目都以GBK来编码了。对于J2EE项目，为了减少编码的干扰通常都是设置一个编码的Filter，强制将Request/Response编码改为GBK。例如一个Spring的常见配置如下： 
<p>&nbsp;</p><pre class="escaped" style="border-right: 1px dashed; padding-right: 5px; border-top: 1px dashed; overflow-y: auto; padding-left: 5px; font-size: 0.9em; overflow-x: auto; padding-bottom: 5px; margin: 2px; border-left: 1px dashed; line-height: 1.2em; padding-top: 5px; border-bottom: 1px dashed; font-family: 'Lucida Console', 'Andale Mono', 'Courier New', Courier, monospace; background-color: #f9f9f9; background-origin: initial; background-clip: initial; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; border-bottom-right-radius: 5px 5px; border-bottom-left-radius: 5px 5px">&lt;filter&gt;
    &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;
    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;
    &lt;init-param&gt;
        &lt;param-name&gt;encoding&lt;/param-name&gt;
        &lt;param-value&gt;GBK&lt;/param-value&gt;
    &lt;/init-param&gt;
    &lt;init-param&gt;
        &lt;param-name&gt;forceEncoding&lt;/param-name&gt;
        &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/init-param&gt;
&lt;/filter&gt;
</pre>
<p style="margin-top: 0px; margin-bottom: 0px">毫无疑问，这在GBK编码的页面访问、提交数据时是没有乱码问题的。但是遇到Ajax就不一样了。Ajax强制将中文内容进行UTF-8编码，这样导致进入后端后使用GBK进行解码时发生乱码。网上的所谓的终极解决方案都是扯淡或者过于复杂，例如下面的文章：</p>
<ul style="margin-top: 0px; margin-bottom: 0px"><li><a class="urllink" style="text-decoration: none" href="http://blog.csdn.net/shimiso/archive/2010/07/08/5721640.aspx" rel="nofollow">GBK编码下jQuery Ajax中文乱码终极暴力解决方案</a></li><li><a class="urllink" style="text-decoration: none" href="http://hi.baidu.com/vcoso/blog/item/f619f43dda4ec4e63c6d97a3.html" rel="nofollow">关于AJAX-gbk(gb2312)中文乱码的解决方案</a></li><li><a class="urllink" style="text-decoration: none" href="http://www.cnblogs.com/meil/archive/2006/08/19/481408.html" rel="nofollow">Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)</a></li></ul>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px">这样的文章很多，显然：</p>
<ul style="margin-top: 0px; margin-bottom: 0px"><li>使用VB进行UTF-8转换成GBK提交是完全不可行（多浏览器、多平台完全不可用）</li><li>使用复杂的js函数进行一次、多次编码，后端进行一次、多次解码也是不靠谱的，成本太高，无法重复使用</li></ul>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px">如果提交数据的时候能够告诉后端传输的编码信息是否就可以避免这种问题？比如Ajax请求告诉后端是UTF-8，其它请求告诉后端是GBK，这样后端分别根据指定的编码进行解码是不是就解决问题了。</p>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px">有两个问题：</p>
<ol style="margin-top: 0px; margin-bottom: 0px"><li>如何通过Ajax告诉后端的编码？Header过于复杂，Cookie成本太高，使用参数最方便。</li><li>后端何时进行解码？每一个请求进行解码，过于繁琐；获取参数时解码，此时已经乱码；在Filter里面动态设置编码是最完善的方案。</li><li>如何从参数中获取编码？如果是POST的body显然无法获取，因此在获取之前所有参数就已经按照某种编码解码过了，无法还原。所以通过URL传递编码最有效。支持GET/POST，同时成本很低。</li></ol>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px">解决了上述问题，来看具体实现方案。 列一段Java代码：</p><pre class="escaped" style="border-right: 1px dashed; padding-right: 5px; border-top: 1px dashed; overflow-y: auto; padding-left: 5px; font-size: 0.9em; overflow-x: auto; padding-bottom: 5px; margin: 2px; border-left: 1px dashed; line-height: 1.2em; padding-top: 5px; border-bottom: 1px dashed; font-family: 'Lucida Console', 'Andale Mono', 'Courier New', Courier, monospace; background-color: #f9f9f9; background-origin: initial; background-clip: initial; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; border-bottom-right-radius: 5px 5px; border-bottom-left-radius: 5px 5px">import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.ClassUtils;
import org.springframework.web.filter.OncePerRequestFilter;

/** 自定义编码过滤器
 * @author <a title="imxylz" href="http://www.imxylz.info/" target="_blank">imxylz</a> (imxylz#gmail.com)
 * @sine 2011-6-9
 */
public class MutilCharacterEncodingFilter extends OncePerRequestFilter {

    static final Pattern inputPattern = Pattern.compile(".*_input_encode=([\\w-]+).*");

    static final Pattern outputPattern = Pattern.compile(".*_output_encode=([\\w-]+).*");

    // Determine whether the Servlet 2.4 HttpServletResponse.setCharacterEncoding(String)
    // method is available, for use in the "doFilterInternal" implementation.
    private final static boolean responseSetCharacterEncodingAvailable = ClassUtils.hasMethod(HttpServletResponse.class,
          "setCharacterEncoding", new Class[] { String.class });

    private String encoding;

    private boolean forceEncoding = false;

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
 throws ServletException, IOException {
        String url = request.getQueryString();
        Matcher m = null;
        if (url != null &amp;&amp; (m = inputPattern.matcher(url)).matches()) {//输入编码
            String inputEncoding = m.group(1);
            request.setCharacterEncoding(inputEncoding);
            m = outputPattern.matcher(url);
            if (m.matches()) {//输出编码
                response.setCharacterEncoding(m.group(1));
            } else {
                if (this.forceEncoding &amp;&amp; responseSetCharacterEncodingAvailable) {
                    response.setCharacterEncoding(this.encoding);
                }
            }
        } else {
            if (this.encoding != null &amp;&amp; (this.forceEncoding || request.getCharacterEncoding() == null)) {
                request.setCharacterEncoding(this.encoding);
                if (this.forceEncoding &amp;&amp; responseSetCharacterEncodingAvailable) {
                    response.setCharacterEncoding(this.encoding);
                }
            }
        }
        filterChain.doFilter(request, response);
    }

    public void setEncoding(String encoding) {
        this.encoding = encoding;
    }

    public void setForceEncoding(boolean forceEncoding) {
        this.forceEncoding = forceEncoding;
    }
}

</pre>
<p class="vspace" style="margin-top: 1.33em; margin-bottom: 0px">解释下：</p>
<ul style="margin-top: 0px; margin-bottom: 0px"><li>如果URL的QueryString中包含_input_encode就使用此编码进行设置Request编码，以后参数按照此编码进行解析，例如如果是Ajax就传入UTF-8，如果是普通的GBK请求则无视此参数。</li><li>如果无视此参数，则按照web.xml中配置的编码规则进行反编码，如果是GBK就按照GBK规则解析。</li><li>对于输出编码同样使用上述规则。需要输出编码依赖输入编码，也就是说如果有一个_output_encode的输出编码，则同时需要有一个_input_encode编码来指定输入编码。当然你可以改造成不依赖输入编码。</li><li>完全兼容Spring的org.springframework.web.filter.CharacterEncodingFilter编码规则，只需要替换类即可。</li><li>没有继承org.springframework.web.filter.CharacterEncodingFilter类的原因是，org.springframework.web.filter.CharacterEncodingFilter里面的encoding参数和forceEncoding参数是private，子类无法使用。在有_input_encode而无_output_encode的时候想依然保持Spring的Response解析规则的话无法做到，所以将里面的代码拷贝过来使用。（为了展示方便，注释都删掉了）</li><li>正则表达式可以改进成只需要匹配一次，从而可以提高一点点效率。</li><li>所有后端请求将无视编码的存在，前端Ajax的GET/POST请求也将无视编码的存在，只是在URL地址中加上一个_input_encode=UTF-8的参数。仅此而已。</li><li>如果想输出的编码也是UTF-8，比如手机端请求、跨站请求等，则需要URL地址参数_input_encode=UTF-8&amp;_output_encode=UTF-8。</li><li>对于POST请求，编码参数不能写在body里面，否则无法解析。</li><li>显然，这种终极解决方案，在任何编码中都可以解决，GBK/UTF-8/ISO8859-1等编码任何组合都可以实现。<br /></li><li>唯一局限性是，此解决方案限制在J2EE项目中，其它平台不知是否有类似Filter这样的组件能够设置编码的概念。</li></ul></span><br /></div><img src ="http://www.blogjava.net/xzclog/aggbug/352729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2011-06-21 11:54 <a href="http://www.blogjava.net/xzclog/archive/2011/06/21/352729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dom4j的使用(全而好的文章)</title><link>http://www.blogjava.net/xzclog/archive/2008/10/31/237777.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Fri, 31 Oct 2008 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2008/10/31/237777.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/237777.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2008/10/31/237777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/237777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/237777.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Dom4j的使用(全而好的文章)关键字: dom4jDom4j 使用简介作者：冰云 icecloud(AT)sina.com时间：2003.12.15                                    &nbsp;            版权声明：            本文由冰云完成，首发于CSDN，未经许可，不得使用于任何...&nbsp;&nbsp;<a href='http://www.blogjava.net/xzclog/archive/2008/10/31/237777.html'>阅读全文</a><img src ="http://www.blogjava.net/xzclog/aggbug/237777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2008-10-31 11:33 <a href="http://www.blogjava.net/xzclog/archive/2008/10/31/237777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典正则表达式 Javascript [ZT]</title><link>http://www.blogjava.net/xzclog/archive/2007/03/16/104313.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Fri, 16 Mar 2007 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2007/03/16/104313.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/104313.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2007/03/16/104313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/104313.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/104313.html</trackback:ping><description><![CDATA[
		<p>摘要：收集一些常用的正则表达式。</p>
		<p>正则表达式用于字符串处理，表单验证等场合，实用高效，但用到时总是不太把握，以致往往要上网查一番。我将一些常用的表达式收藏在这里，作备忘之用。本贴随时会更新。<br /><a id="more-33"></a><br />匹配中文字符的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: olive">[</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">u4e00</span>
						<span style="COLOR: gray">-\</span>
						<span style="COLOR: blue">u9fa5</span>
						<span style="COLOR: olive">]</span>
				</div>
		</div>
		<p>匹配双字节字符(包括汉字在内)：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: olive">[</span>
						<span style="COLOR: gray">^\</span>
						<span style="COLOR: blue">x00</span>
						<span style="COLOR: gray">-\</span>
						<span style="COLOR: blue">xff</span>
						<span style="COLOR: olive">]</span>
				</div>
		</div>
		<p>应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: teal">String</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">prototype</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">len</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: green">function</span>
						<span style="COLOR: olive">(){</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: green">return</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: green">this</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">replace</span>
						<span style="COLOR: olive">([</span>
						<span style="COLOR: gray">^\</span>
						<span style="COLOR: blue">x00</span>
						<span style="COLOR: gray">-\</span>
						<span style="COLOR: blue">xff</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">g,"aa").length; }</span>
				</div>
		</div>
		<p>匹配空行的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">n</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">|</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">*\</span>
						<span style="COLOR: blue">r</span>
				</div>
		</div>
		<p>匹配HTML标记的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">&lt;(.*)&gt;.*&lt;</span>
						<span style="COLOR: navy">\/</span>
						<span style="COLOR: red">\1&gt;|&lt;(.*) </span>
						<span style="COLOR: navy">\/</span>
						<span style="COLOR: red">&gt;</span>
						<span style="COLOR: #8b0000">/</span>
				</div>
		</div>
		<p>匹配首尾空格的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: olive">(</span>
						<span style="COLOR: gray">^\</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">|</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">*$</span>
						<span style="COLOR: olive">)</span>
				</div>
		</div>
		<p>应用：j avascript中没有像v bscript那样的trim函数，我们就可以利用这个表达式来实现，如下：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: teal">String</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">prototype</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">trim</span>
						<span style="COLOR: gray"> = </span>
						<span style="COLOR: green">function</span>
						<span style="COLOR: olive">()</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: olive">{</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: green">return</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: green">this</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">replace</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">(^\s*)|(\s*$)</span>
						<span style="COLOR: #8b0000">/g</span>
						<span style="COLOR: gray">, </span>
						<span style="COLOR: #8b0000">""</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">;<br /></span>
						<span style="COLOR: olive">}</span>
				</div>
		</div>
		<p>利用正则表达式分解和转换IP地址<br />下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: green">function</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">IP2V</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: olive">{</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: blue">re</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">(\d+)\.(\d+)\.(\d+)\.(\d+)</span>
						<span style="COLOR: #8b0000">/g</span>
						<span style="COLOR: gray">  </span>
						<span style="COLOR: #ffa500">//匹配IP地址的正则表达式</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: green">if</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">re</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">test</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">))</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: olive">{</span>
						<span style="COLOR: gray">
								<br />        </span>
						<span style="COLOR: green">return</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: teal">RegExp</span>
						<span style="COLOR: gray">.$</span>
						<span style="COLOR: maroon">1</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: teal">Math</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">pow</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: maroon">3</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">)+</span>
						<span style="COLOR: teal">RegExp</span>
						<span style="COLOR: gray">.$</span>
						<span style="COLOR: maroon">2</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: teal">Math</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">pow</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: maroon">2</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">)+</span>
						<span style="COLOR: teal">RegExp</span>
						<span style="COLOR: gray">.$</span>
						<span style="COLOR: maroon">3</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: teal">RegExp</span>
						<span style="COLOR: gray">.$</span>
						<span style="COLOR: maroon">4</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">1</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: olive">}</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: green">else</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: olive">{</span>
						<span style="COLOR: gray">
								<br />        </span>
						<span style="COLOR: green">throw</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: green">new</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">Error</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">Not a valid IP address!</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />    </span>
						<span style="COLOR: olive">}</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: olive">}</span>
				</div>
		</div>
		<p>不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: green">var</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">10.100.20.168</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">split</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">.</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">alert</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">IP值是：</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: maroon">0</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: maroon">1</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: maroon">2</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">255</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: blue">ip</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: maroon">3</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">*</span>
						<span style="COLOR: maroon">1</span>
						<span style="COLOR: olive">))</span>
				</div>
		</div>
		<p>匹配Email地址的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">([</span>
						<span style="COLOR: gray">-+.</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">*@\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">([</span>
						<span style="COLOR: gray">-.</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">*\.\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">([</span>
						<span style="COLOR: gray">-.</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">\</span>
						<span style="COLOR: blue">w</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">*</span>
				</div>
		</div>
		<p>匹配网址URL的正则表达式：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: blue">http</span>
						<span style="COLOR: gray">:</span>
						<span style="COLOR: #ffa500">//([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?</span>
				</div>
		</div>
		<p>利用正则表达式去除字串中重复的字符的算法程序：[*注：此程序不正确]</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: green">var</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">abacabefgeeii</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: green">var</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">s1</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">replace</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">(.).*\1</span>
						<span style="COLOR: #8b0000">/g</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">$1</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: green">var</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">re</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: green">new</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: teal">RegExp</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">[</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: blue">s1</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">]</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">g</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: green">var</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">s2</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">replace</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">re</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: #8b0000">""</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">alert</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">s1</span>
						<span style="COLOR: gray">+</span>
						<span style="COLOR: blue">s2</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">  </span>
						<span style="COLOR: #ffa500">//结果为：abcefgi</span>
				</div>
		</div>
		<p>*注<br />===============================<br />如果var s = “abacabefggeeii”<br />结果就不对了，结果为：abeicfgg<br />正则表达式的能力有限<br />===============================</p>
		<p>我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法，最终没有找到，这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符，再以重复的字符建立第二个表达式，取到不重复的字符，两者串连。这个方法对于字符顺序有要求的字符串可能不适用。</p>
		<p>得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">http://blog.penner.cn/page1.htm</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: gray">.</span>
						<span style="COLOR: blue">replace</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">/</span>
						<span style="COLOR: red">(.*</span>
						<span style="COLOR: navy">\/</span>
						<span style="COLOR: red">){ 0, }([^\.]+).*</span>
						<span style="COLOR: #8b0000">/i</span>
						<span style="COLOR: blue">g</span>
						<span style="COLOR: gray">,</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">$2</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">alert</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: blue">s</span>
						<span style="COLOR: olive">)</span>
				</div>
		</div>
		<p>利用正则表达式限制网页表单里的文本框输入内容：</p>
		<p>用正则表达式限制只能输入中文：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: blue">onkeyup</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">value=value.replace(/[^\u4E00-\u9FA5]/g,'')</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">onbeforepaste</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))</span>
						<span style="COLOR: #8b0000">"</span>
				</div>
		</div>
		<p>用正则表达式限制只能输入全角字符：</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: blue">onkeyup</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">value=value.replace(/[^\uFF00-\uFFFF]/g,'')</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">onbeforepaste</span>
						<span style="COLOR: gray">=</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))</span>
						<span style="COLOR: #8b0000">"</span>
				</div>
		</div>
		<p>用正则表达式限制只能输入数字：</p>
		<div class="hl-s