关于正则表达式的问题
有几个正则表达式是用于删除字符串前后的空格的,请大家帮我看看,他们之间
有什么区别,(^,$,惰性量词和贪婪量词)是如何匹配字符串的,十分感谢!!
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 "))
自己仔细想想