我有以下网址结构:
Sync.tryReleaseShared(int)
我想从网址上剪切学生ID。到目前为止,我已经想出了这个:
https://api.bestschool.com/student/1102003120009/tests/json
返回
学生/ 1102003120009 /测试/ JSON
我只想要身份证。
答案 0 :(得分:4)
您的正则表达式(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 : " + m[1] + "<br/>";
}
var m2 = str.match(/\d+(?=\/tests\/)/);
if (m2 !== null) {
document.getElementById("r").innerHTML += "Second method: " + m2;
}
<div id="r"/>