js正则积累

1、查找并返回标签里指定内容的<tr>...</tr>

var getTrStr = function(a){
var s = [];
a.replace(
/<(tr)[\s\S]*?\/\1>/ig, function(a){/value=[0-9][^\.].+?name=storageArrayHidden/i.test(a) && s.push(a);
}
);
return s;
}
var trStr = '<tr><td class=c>均码</td><td class=c><input value=5.1 type=hidde name=storageArrayHidden /></td></tr><tr><td class=c>均码</td><td class=c><input type=hidden name=no></td></tr><tr><td class=c>均码</td><td class=c><input value=5 type=hidden name=storageArrayHidden></td></tr>';
alert(getTrStr(trStr).join(
'\n'))

【说明】

stringObject.replace(regexp,replacement) 介绍

/<(tr)[\s\S]*?\/\1>/ig:匹配所有的tr标签内容(可以包含换行符,制表符等),另一种写法/<tr.+?tr>/ig(只包含单个字符)

i:表示匹配时不分大小写字母

g:查找所有匹配项

\s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

\S:匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

*: 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。

[\s\S]*:多次匹配任何所有字符

? :匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。

\:将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。

\1:用来指定第一个子匹配,也就是匹配tr,一般都与()一起使用

():标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。并且有缓存起来,\1便是读取缓存中出现第二次的子表达式

2、new RegExp(pattern, attributes) 与/pattern/及常用到的方法

 var str = '|1.2|2.3|4.5|5.6|';
var a = str.replace(new RegExp("\\|[^|]*2[^|]*","g"),"");
var b = str.match(new RegExp("\\|[^|]*2[^|]*","g"));
var c = str.search(new RegExp("\\|[^|]*2[^|]*","g"));
var d = str.replace(/\|[^|]*2[^|]*/g,"")
var e = str.match(/\|[^|]*2[^|]*/g);
var f = str.search(/\|[^|]*2[^|]*/g);

【区别】在new RegExp(pattern, attributes)声明的正则对象里的转义字符\需要二次转义\\,如\d将写成\\d

但是如果读取dom属性如DOM.getAttribute('pattern')时,不需要转意。

3、对字符进行unicode编码

var foo =  function(s){
	return s.replace(/[\u4E00-\u9FA5]/ig,function(w){
		return escape(w).toLowerCase().replace(/%/ig,'\\');
	});

};

4、split(/pattern/)

str.split(/\s+/g); //返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

5、返回当前页面域名

window.location.href.match(/[^\/]*[^\/]+/g)[1]
posted @ 2010-06-09 16:48  chesihui  阅读(211)  评论(0)    收藏  举报