2 javascript http://www.w3school.com.cn/js/jsref_obj_regexp.asp
http://www.w3school.com.cn/js/jsref_obj_string.asp
2.1 正则表达式定义
语法 1 re = /pattern/[flags]
语法 2 re = new RegExp("pattern",["flags"])
Flags
g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
default: 找到第一个符合pattern的字串后返回(忽略其他符合条件的字串)
2.2 RegExp对象提供的正規表示式方法有:
2.2.1 RegExp.exec(”字串”) 或 RegExp(”字串”)
若正则没有g修饰符,该函数只记录匹配参数字串的第一个符合正则的子字串的内容在对象中。
- var result1 = /b/.exec("test billing");
- // exec返回的是一个对象而不是一个子字串
- alert(result1.index + " : " + result1.input + " : " + result1);
当正则表达式含有g修饰符,exec() 的工作原理如下:
exec执行之后会更新正则的 lastIndex 属性(表示本次匹配的字符串的下个字符的索引)
下一次再用这个正则表达式匹配字符串的时候就会从上次的lastIndex属性开始匹配
- var test="";
- var regu=/e/g;
- //regu.lastIndex=10;
- while(test=regu.exec("The best things in life are free"))
- {
- alert(test.index + " : " + test.input + " : " + test + " lastIndex: " + regu.lastIndex );
- //可以赋值给regu.lastIndex ,或者用RegExp对象的compile方法把regu.lastIndex的值重设为0
- }
2.2.2RegExp.test(”字串”)
僅測試引數是否符合pattern,是傳回true、否則傳回false。
example
- //(1) 只要字串包含符合条件的子串则返回true
- alert(/b/.test("bc")); //(true)
- alert(/c/.test("bc")); //(true)
- alert(/cb/.test("bc")); //(false)
- //(2) 匹配字串是否完全符合正则
- alert(/^b$/.test("bc")); // (false)
- alert(/^b$/.test("b")); //(true)
2.3 string 对象的内置函数 http://blog.csdn.net/gabriel80/archive/2008/11/15/3304751.aspx
charAt() 返回传递给此方法的索引处的字符
indexOf() 返回被传递给此方法的字符串在一个sting对象的实例中第一次出现的索引
substring() 返回被传递的开始和结束索引之间的字符
toUpperCase() 将字符串中的所有字符转换为大写
toLowerCase() 将字符串中的所有字符转换为小写
match() 返回一个数组,此数组包含着被传递给此方法的规则表达式找到的匹配。
- var result = "The best things in life are free".match(/e/);
- //注销上句并取消下句代码,运行效果就能知道 g 对 match的影响了
- //var result = "The best things in life are free".match(/e/g);
- if(result)
- {
- if(result.index)
- alert("result.index : " + result.index);
- else
- alert("no index property");
- if(result.input)
- alert("result.input : " + result.input);
- else
- alert("no input property");
- for(i=0;i<result.length;i++)
- {
- alert("result[" + i + "]: " + result[i]);
- }
- }else{
- alert('null:匹配失败!')
- }
replace() 用被传递给此方法的字符串替换正则表达式匹配的子字串,返回新字串而不改变原字串的值
- var test = " test ";
- alert( test.replace(/(^/s*)|(/s*$)/g, "")); // 对所有符合regEx的字串进行替换后返回新字串
- alert( test.replace(/(^/s*)|(/s*$)/, "")); //只对第一个符合regEx的字串进行替换后返回新字串
- alert(test.length); // test变量的长度仍包括" test "前后的空括号
- //var reg = /(/w+)(/s)(/w+)/;
- var reg = /(/w+)/s(/w+)/;
- var str = "cainiao gaoshou";
- var newStr = str.replace(reg,'$2 $1');
- alert(newStr);
search() 返回正则表达式第一次匹配的位置,如果没有找到匹配则返回-1
- var reg = /idea/;
- var str = 'blueidea';
- var pos = str.search(reg);
- alert(pos);
split() 返回被分割为段的字符串,这个分割由被传递给此方法的字符串和实例限制定义
- var reg = //W/; //非单词,如果小写w则表示单词字符,数字,下划线
- var str = 'bbs.blueidea.com';
- var arr = str.split(reg);
- document.write(arr);
- for(i=0;i<arr.length;i++)
- alert(arr[i]);