javascript - JS 正则表达式从 url 返回字符串

标签 javascript regex

我有以下 URL 结构:

https://api.bestschool.com/student/1102003120009/tests/json

我想从 URL 中删除学生 ID。到目前为止我已经想出了这个:

/(student\/.*[^\/]*)/

返回

student/1102003120009/tests/json

我只想要 ID。

最佳答案

您的正则表达式 (student\/.*[^\/]*) 匹配并捕获第 1 组文字序列 student/,然后匹配除换行符,出现 0 次或多次 (.*) - 可以一次匹配整行! - 然后是除 / 之外的 0 个或多个字符。由于.*,它不起作用。此外,捕获组应移至 [^\/]* 模式。

您可以使用以下正则表达式并获取第 1 组值:

student\/([^\/]*)

参见regex demo

正则表达式按字面匹配 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&nbsp;&nbsp;&nbsp;&nbsp;: " + 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/

相关文章:

javascript - 从对象运行 jQuery Ajax

javascript - 如何将本指南实现到 headless 浏览器 https ://www. npmjs.com/package/user-agents#contributing

python - 替换 R 中段落中的确切句子

javascript - 图像根据父 div 大小调整大小或裁剪

javascript - 如何从 JavaScript 获取我的扩展程序 ID?

python - 正则表达式匹配一次(不重复)

c# - 有效函数名称的正则表达式 ([a-zA-Z]\w+)[^\w]

regex - 如何通过正则表达式在 kotlin 中匹配双引号中的字符串

javascript代码检查特殊字符并在其之前添加双斜杠?

javascript - 如何检测浏览器是否在 JavaScript 中遇到 JavaScript 错误?