我有以下 URL 结构:
https://api.bestschool.com/student/1102003120009/tests/json
我想从 URL 中删除学生 ID。到目前为止我已经想出了这个:
/(student\/.*[^\/]*)/
返回
student/1102003120009/tests/json
我只想要 ID。
最佳答案
您的正则表达式 (student\/.*[^\/]*)
匹配并捕获第 1 组文字序列 student/
,然后匹配除换行符,出现 0 次或多次 (.*
) - 可以一次匹配整行! - 然后是除 /
之外的 0 个或多个字符。由于.*
,它不起作用。此外,捕获组应移至 [^\/]*
模式。
您可以使用以下正则表达式并获取第 1 组值:
student\/([^\/]*)
正则表达式按字面匹配 student/
,然后匹配并捕获第 1 组除 /
之外的零个或多个符号。
或者,如果您想避免使用捕获,并假设 ID 始终为数字且后跟 /tests/
,则可以使用以下正则表达式:
\d+(?=\/tests\/)
\d+
匹配 1 个或多个数字,(?=\/tests\/)
检查数字后面是否有 /tests/
字符序列。
var re = /student\/([^\/]*)/;
var str = 'https://api.bestschool.com/student/1102003120009/tests/json';
var m = str.match(re);
if (m !== null) {
document.getElementById("r").innerHTML = "First method : " + m[1] + "<br/>";
}
var m2 = str.match(/\d+(?=\/tests\/)/);
if (m2 !== null) {
document.getElementById("r").innerHTML += "Second method: " + m2;
}
<div id="r"/>
关于javascript - JS 正则表达式从 url 返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34021473/