項目中有個需求,需要從url中截取ID。需要在前台用js匹配截取,所以就百度一下,發現都沒有說清楚,所以這里就總結下。
正則表達式如下:
var epId=0; //工廠企業ID
var urlIndex = /.*(\/gongchang\/geli)$/; //工廠 格力電器
var urlCommon = /.*\/Shop\/([0-9]*$)/;//正常店鋪 店鋪Shop后為店鋪ID
var linkAddress = "http://www.baidu.com/Shop/2541";
//var linkAddress = "http://www.baidu.com/gongchang/geli";
if (linkAddress != null && $.trim(linkAddress) != "") {
//如果是工廠
if (urlIndex.test(linkAddress)) {
// alert("a");
var matchArr = linkAddress.match(urlIndex);
if (matchArr != null && matchArr.length >= 2 && matchArr[1] == "/gongchang/geli") {
epId = -1;
};
} else if (urlCommon.test(linkAddress)) {//如果是普通店鋪
// alert("b");
var matchArr = linkAddress.match(urlCommon);
if (matchArr != null && matchArr.length >= 2) {
epId = parseInt(linkAddress.match(urlCommon)[1])
}
} else {
epId = -2;
}
} else {
}
這里不是要講業務,而是講正則表達式: var regx= /.*\/Shop\/([0-9]*$)/
js的正則表達式,有兩種初始化方式,這里直接用變量賦值,需要注意的是表達式中斜杠的轉義方式 是用 “\”來轉義。而不是其他的什么 "\\" 或者其他。
如果你用在線正則表達式測試,顯示不正確,那么也不必在意。只要vs不報錯能運行就可以,在線測試工具應該是發到服務器測試的,服務器的處理方式和js不一樣,我不肯定這一點。
你也可以下載一個本地的正則表達式測試工具,因為有時候在線測試不正確,但是本地測試工具測試是正確的,這可能是在線測試的bug;
好,就總結到這里,如果對你有用,請點擊贊,有了贊寫總結比較有勁!哈哈。
