日期:2014-05-16  浏览次数:20351 次

关于正则表达式的问题
有几个正则表达式是用于删除字符串前后的空格的,请大家帮我看看,他们之间

有什么区别,(^,$,惰性量词和贪婪量词)是如何匹配字符串的,十分感谢!!

var   sSting= "                 123   456   123,456                   "
sMatch=/^\s*(.*?)\s*$/;
sMatch=/\s*(.*?)\s*/g;
sMatch=/\s*(.*?)\s*/;
sMatch=/^\s*(.*)\s*$/;
sMatch=/\s*(.*)\s*/;

------解决方案--------------------
/(^[ | ]*)|([ | ]*$)/g

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n ' 或 '\r ' 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n ' 或 '\r ' 之前的位置。

'* '、 '+ '和 '? ' 限定符都称之为贪婪的,也就是说,他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。

例如,你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式:
<H1> Chapter 1 – Introduction to Regular Expressions </H1>

下面的表达式匹配从开始的小于号 ( <) 到 H1 标记结束处的大于号之间的所有内容。
/ <.*> /

如果所要匹配的就是开始的 H1 标记,则下述非贪婪地表达式就只匹配 <H1> 。
/ <.*?> /

通过在 '* '、 '+ ' 或 '? ' 限定符后放置 '? ',该表达式就从贪婪匹配转为了非贪婪或最小匹配。

您可以参考《Jscript 用户指南》

------解决方案--------------------
贪婪量词先看整个字符串是不是匹配,如果没有发现匹配,先去掉最后字符串中的最后一个字符,并再次尝试,如果还没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复下去直到发现匹配或不剩任何字符串,上面的简单量词都是贪婪量词。
  惰性量词先看字符串中的第一个字母是不是一个匹配,如果不匹配则继续读入下一个字符进行匹配,如果没有则一直匹配下去,与贪婪量词刚好相反,惰性量词用上面的简单量词跟一个?表示。

var sSting= " 123 456 123,456 "
sMatch=/^\s*(.*?)\s*&/g;
alert(sSting.replace(sMatch, "$1 "))
sMatch1=/\s*(.*?)\s*/g;
alert(sSting.replace(sMatch1, "$1 "))

自己仔细想想