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]