对我来说,正则表达式太令人困惑了。有人能解释一下如何解析这个URL,以便我只获取数字7
吗?
'/week/7'
var weekPath = window.location/path = '/week/7';
weekPath.replace(/week/,""); // trying to replace week but still left with //7/
对我来说,正则表达式太令人困惑了。有人能解释一下如何解析这个URL,以便我只获取数字7
吗?
'/week/7'
var weekPath = window.location/path = '/week/7';
weekPath.replace(/week/,""); // trying to replace week but still left with //7/
修复你的正则表达式:
将\/
添加到你的正则表达式中,如下所示。这将捕获字符串week
前后的/
。
var weekPath = '/week/7';
var newString = weekPath.replace(/\/week\//,"");
console.dir(newString); // "7"
.match()
:var weekPath = '/week/7';
var myNumber = weekPath.match(/\d+$/);// \d captures a number and + is for capturing 1 or more occurrences of the numbers
console.dir(myNumber[0]); // "7"
阅读:
String.prototype.replace()
- JavaScript | MDN - 这个方法可以让你在一个字符串中查找并替换指定的字符或文本。String.prototype.match()
- JavaScript | MDN - 这个方法可以让你在一个字符串中查找是否存在匹配的字符或文本,并返回匹配结果。将其作为字符串而不是正则表达式放置
weekPath.replace("/week/","");
=> "7"
区别?
当字符串用/ /
分隔时,字符串被视为正则表达式模式,仅替换week
。
但是,当用" "
分隔时,它被视为原始字符串,/week/
。
weekPath.replace(/week/,""); // trying to replace week but still left with //7/
在这里,您匹配了字符week
并替换它们,但是您的模式不匹配斜杠字符。在您的源代码中的两个斜杠只是用于创建正则表达式对象的JavaScript语法的一部分。
相反:
weekPath = weekPath.replace(/\/week\//, "");
var path = window.location.pathname.split('/');
var num = path[1]; //7
'/week/7'.split('/')[2]
- anubhava