/(^[ | ]*)|([ | ]*$)/g^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
 
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 '*'、 '+'和 '?' 限定符都称之为贪婪的,也就是说,他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。 例如,你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式:
<H1>Chapter 1 – Introduction to Regular Expressions</H1>下面的表达式匹配从开始的小于号 (<) 到 H1 标记结束处的大于号之间的所有内容。
/<.*>/如果所要匹配的就是开始的 H1 标记,则下述非贪婪地表达式就只匹配 <H1>。
/<.*?>/通过在 '*'、 '+' 或 '?' 限定符后放置 '?',该表达式就从贪婪匹配转为了非贪婪或最小匹配。您可以参考《Jscript 用户指南》

解决方案 »

  1.   

    补充:var sSting="        123 456 123,456         "sMatch=/^\s*(.*?)\s*$/;  //匹配“        123 456 123,456         ”整行,第一个子匹配$1为“123 456 123,456”sMatch=/\s*(.*?)\s*/g;   //匹配“        ”、“  ”、“   ”、“”等多个,第一个子匹配$1为最前的“        ”。g: global 属性;使用 global 标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个。这也被称为全局匹配。sMatch=/\s*(.*?)\s*/;    //跟第二条不同的只是没有全局属性。找到一个就完成。sMatch=/^\s*(.*)\s*$/;   //跟第一条相同。有了^(开始)$(结束)肯定是最大模式(贪婪),就算加上“?最小匹配标识也没用。sMatch=/\s*(.*)\s*/;   //跟第三条不同的是没有“?”最小匹配标识。贪婪模式。匹配“        123 456 123,456         ”整个。
      

  2.   

    十分感谢!那对于:
    《sMatch=/\s*(.*?)\s*/g;   //匹配“        ”、“  ”、“   ”、“”等多个,第一个子匹配$1为最前的“        ”。》
    为什么它不匹配123 456等字符呢?
    还有一个问题,对于这个例子中,贪婪和惰性是()的子匹配的范围是多大呢?
      

  3.   

    贪婪量词先看整个字符串是不是匹配,如果没有发现匹配,先去掉最后字符串中的最后一个字符,并再次尝试,如果还没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复下去直到发现匹配或不剩任何字符串,上面的简单量词都是贪婪量词。
      惰性量词先看字符串中的第一个字母是不是一个匹配,如果不匹配则继续读入下一个字符进行匹配,如果没有则一直匹配下去,与贪婪量词刚好相反,惰性量词用上面的简单量词跟一个?表示。var sSting=" 123 456 123,456 "
    sMatch=/^\s*(.*?)\s*&/g;
    alert(sSting.replace(sMatch,"$1"))
    sMatch1=/\s*(.*?)\s*/g;
    alert(sSting.replace(sMatch1,"$1"))自己仔细想想