[英]Strange behavior javascript regexp
console.log("url/page/value".match(/\/([a-zA-Z0-9]+)/g));
为什么这段代码返回一个数组:[/ page,/ value]? 为什么要捕获符号“ /”?
jsfiddle: http : //jsfiddle.net/wq93T/
提前致谢。
您使用\\
转义/
尝试使用此方法,即\\/
表示/
console.log("url/page/value".match(/([a-zA-Z0-9]+)/g));
var path = "url/page/value";
var regex = /\/([a-zA-Z0-9]+)/g;
var match = regex.exec(path);
console.log(match[0]); // "/page"
console.log(match[1]); // "page"
match = regex.exec(path);
console.log(match[0]); // "/value"
console.log(match[1]); // "value"
match = regex.exec(path);
console.log(match); //null
exec
返回的数组包含索引0中的整个匹配项,并在后续索引(第一个为1,第二个为2,等等)处捕获(括号中的值)。
作为一行:
console.log(/\/([a-zA-Z0-9]+)/g.exec("url/page/value")[1]); // "page"
作为返回捕获数组的函数:
var path = "url/page/value";
var regex = /\/([a-zA-Z0-9]+)/g;
console.log(capturedMatch(path, regex, 1));
function capturedMatch(str, rgx, index) {
var m;
var res = [];
while((m = rgx.exec(str)) != null) {
res.push(m[index]);
}
return res;
}
如果您不希望/
,表达式可以进一步简化:
console.log("url/page/value".match(/[a-zA-Z0-9]+/g));
要么
console.log("url/page/value".match(/[^\/]+/g));
要么
console.log("url/page/value".split('/'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.