參考
1.獲取指定URL參數(shù)
function getUrlParams(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); //定義正則表達(dá)式
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
window.location = "http://www.baidu.com?name=elephant&age=25&sex=male";
var name = getUrlParams("name"); //elephant
var age = getUrlParams("age"); //25
var sex = getUrlParams("sex"); //male
- (^|&)
^匹配字符串開頭,&就是&字符
(^|&)匹配字符串開頭或者&字符,如果其后還有正則,那么必須出現(xiàn)在字符串開始或&字符之后 - =([^&]*)
^匹配輸入字符串的開始位置奥务,除非在方括號表達(dá)式中使用物独,此時它表示不接受該字符集合。
上面匹配=后面零個或多個不是&的字符氯葬,直至碰到第一個&為止 - (&|$)
意思就是匹配以&結(jié)尾或者字符一行的末尾位置
2.獲取所有的URL參數(shù)
function parse_url(_url){ //定義函數(shù)
var pattern = /(\w+)=(\w+)/ig;//定義正則表達(dá)式
var parames = {};//定義數(shù)組
url.replace(pattern, function(a, b, c){
parames[b] = c;
});
return parames;//返回這個數(shù)組.
}
var url = "http://www.baidu.com?name=elephant&age=25&sex=male"
var params = parse_url(url);// ["name=elephant", "age=25", "sex=male"]
3.正則表達(dá)式中/i,/g,/ig,/gi,/m的區(qū)別和含義
/i (忽略大小寫)
/g (全文查找出現(xiàn)的所有匹配字符)
/m (多行查找)
/gi(全文查找挡篓、忽略大小寫)
/ig(全文查找、忽略大小寫)
4.match
這個方法的行為在很大程度上有賴于 regexp 是否具有標(biāo)志 g帚称。
如果 regexp 沒有標(biāo)志 g官研,那么 match() 方法就只能在 stringObject 中執(zhí)行一次匹配。如果沒有找到任何匹配的文本闯睹, match() 將返回 null戏羽。否則,它將返回一個數(shù)組楼吃,其中存放了與它找到的匹配文本有關(guān)的信息始花。
var str="1 plus 2 equal 3"
console.log(str.match(/\d+/g))
要理解?=和?!,首先需要理解前瞻孩锡,后顧酷宵,負(fù)前瞻,負(fù)后顧四個概念:
前瞻:
exp1(?=exp2) 查找exp2前面的exp1
后顧:
(?<=exp2)exp1 查找exp2后面的exp1
負(fù)前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
負(fù)后顧:
(?<!=exp2)exp1 查找前面不是exp2的exp1
舉例:
"中國人".replace(/(?<=中國)人/, "rr") // 匹配中國人中的人浮创,將其替換為rr忧吟,結(jié)果為 中國rr
"法國人".replace(/(?<=中國)人/, "rr") // 結(jié)果為 法國人,因?yàn)槿饲懊娌皇侵袊杜詿o法匹配到