2012年3月19日 天气有雨 没事找事找 不懂得拒绝 招来的事 往心里面咽!
<script type="text/javascript">
//js中正则表达式学习
//var re=new RegExp();//RegExp是一个对象,但这样没什么效果,需要将正则表达式的内容作为字符串传进去
//re=new RegExp("a");//创建一个匹配a字符的表达式
//alert(re.test("afdf"));//true
//re=new RegExp("a","g");//忽略大小写 g全文查找 i忽略大小写 m多行查找
//alert(re.test("ddddass"));//true
//var re =new RegExp("a","gi");//匹配所有的a或A
//正则表达式的另一种声明
//js可以用/表达式/来声明RegExp表达式,并且此声明中的字符不做js的转义处理,直接当成正则表达式 相当c#中加一个“@”
//var re=/a/gi;
//正则表达式对象的方法
//1、test 返回一个Boolean值 指出查找的字符串是否存在此模式
//2、exec 用正则表达式在字符串中运行查找 并返回包含该查找 结果 的一个数组
//3、compile 把正则表达式编译为内部格式,从而执行得更快
//test测试
//var re=/he/;//最简单的正则表达式,将匹配he这个单词
//var str="he1234";
//alert(re.test(str));//true
//仅仅知道了字符串是否匹配模式还不够,我们还需要知道哪些字符匹配了该模式
//var osVersion="Ubnutu 8";
//var re=/^[a-zA-Z]+\s+\d?$/;
//alert(re.test(osVersion));//true
//另一个方面,exec,返回一个数组,数组的第一个元素为完整匹配
//arr=re.exec(osVersion);
//alert("数组长度:"+arr.length+",arr[0]:"+arr[0]);//数组长度:1,arr[0]:Ubnutu 8
//我们只需要取出数字
//re=/\d+/;
//alert(re.exec(osVersion)[0]);//输出 8
//更复杂 的用法,使用子匹配
//var re=/^[a-zA-Z]+\s+(\d?)$/;
//arr=re.exec(osVersion);
//alert(arr[0]);//返回 整个字符串
//alert(arr[1]);//返回 8
//注意 当字符串不正确时,返回 null
//String对象的一些和正则表达式有关的方法
//var str="some money";
//alert(str.replace("some","much"));
//var str="some money";
//var e=/\s/;
//alert(str.replace(e,"%"));//返回some%money
//var str="some some \tsome\t\f";
//re=/\s+/g;// g是匹配全局的意思,如果没有g 则匹配成功第一次 就不再进行匹配了
//alert(str.replace(re," "));//some some some
//另一个重要的方法是split
//var str="a-bc-d";
//var arr=str.split("-");
//var str1="";
//for(var i=0;i<arr.length;i++){
// str1+=arr[i]+" ";
//}
//str = "My age is 18.Golden age!";//年龄不是一定的,我们用indexOf不能查找它的位置
//re = /\d+/;
//alert(str.search(re));//返回查找到的字符串开始下标10
//String对象的match方法用于将字符串与正则表达式进行匹配并返回结果数组
//var str="My name is CJ.Hello everyone!";
//var re=/[A-Z]/;
//var arr=str.match(re);
//alert(arr);//返回结果数组,但只匹配了一个值 “W",因为没有全局匹配
//re=/[A-Z]/g;
//arr=str.match(re);
//alert(arr);//M,C,J,H
//从字符串中抽取单词
//var re=/\b[a-zA-Z]+\b/g;
//var str="My name is zhang feng";
//var arr=str.match(re);
//alert(arr);//My,name,is,zhang,feng
//RegExp对象实例的一些属性
//var re=/[a-z]/i;
//alert(re.source);//输出[a-z]
//每个RegExp对象的实例具有lastIndex属性,它是被查找字符串中下一次成功匹配的开始位置,默认值是-1。 lastIndex 属性被 RegExp 对象的 exec 和 test 方法修改.并且它是可写的.
//var re = /[A-Z]/;
//exec方法执行后,修改了re的lastIndex属性,
//var str = "Hello,World!!!";
//var arr = re.exec(str);
//alert(re.lastIndex);//0,因为没有设置全局标志
//re = /[A-Z]/g;
//arr = re.exec(str);
//alert(re.lastIndex);//1
//arr = re.exec(str);
//alert(re.lastIndex);//7
//RegExp对象的静态属性
//input 最后用于匹配的字符串(传递给test,exec方法的字符串)
//var re = /[A-Z]/;
//var str = "Hello,World!!!";
//var arr = re.exec(str);
//alert(RegExp.input);//Hello,World!!!
//re.exec("tempstr");
//alert(RegExp.input);//仍然是Hello,World!!!,因为tempstr不匹配
//lastMatch 最后匹配的字符
//re = /[a-z]/g;
//str = "hi";
//re.test(str);
//alert(RegExp.lastMatch);//h
//re.test(str);
//alert(RegExp["$&"]);//i ,$&是lastMatch的短名字,但由于它不是合法变量名,所以要。。
//lastParen 最后匹配的分组
//re = /[a-z](\d+)/gi;
//str = "Class1 Class2 Class3";
//re.test(str);
//alert(RegExp.lastParen);//1
//re.test(str);
//alert(RegExp["$+"]);//2
//leftContext 返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符
//rigthContext 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符
//re = /[A-Z]/g;
//str = "123ABC456";
//re.test(str);
//alert(RegExp.leftContext);//123
//alert(RegExp.rightContext);//BC456
//re.test(str);
//alert(RegExp["$`"]);//123A
//alert(RegExp["$'"]);//C456
//js正则表达式分组
//当包含分组的正则表达式进行过test,match,search这些方法之后,每个分组都被放在一个特殊的地方以备将来使用,这些存储是分组中的特殊值,我们称之为反向引用
//反向引用被存储在RegExp对象的静态属性$1—$9中
//var str="zhangfeng@123.com";
//var re=/^(\w+)@(.+)$/
//str.match(re);
//alert(RegExp.$1);//zhangfeng
//alert(RegExp.$2);//123.com
</script>