如何从URL末尾短横线后提取目标ID?正则表达式问题
解决URL末尾短横线后数字ID的提取问题
嘿,我懂你遇到的麻烦了——你之前用的正则/[^0-9]/g会把字符串里所有非数字字符都删掉,所以连%C3%A4里的3和4都被保留下来,最后和目标ID拼在一起,才得到了错误的34361433。
这里给你两种靠谱的解决方案:
方法一:精准正则匹配
用专门匹配字符串末尾短横线后数字的正则,只捕获我们需要的那部分:
let str = 'questions/M%C3%A4rkte+que+sentra-361433'; const matchResult = str.match(/-(\d+)$/); const id = matchResult ? matchResult[1] : null; // 结果是"361433"
正则/-(\d+)$/的逻辑:
-匹配字面量的短横线(\d+)捕获一个或多个连续数字(这就是我们要的ID)$锚定到字符串结尾,确保我们取的是最后一段的数字
方法二:字符串分割法(更直观)
如果能确定目标ID一定在最后一个短横线后面,直接用split拆分字符串再取最后一段就行,不用正则:
let str = 'questions/M%C3%A4rkte+que+sentra-361433'; const parts = str.split('-'); const id = parts.pop(); // 结果是"361433"
这个方法简单易懂,适合结构固定的URL字符串。
两种方法都能准确提取到你要的361433,选哪种看你个人习惯啦~
内容的提问来源于stack exchange,提问作者Sasha Zoria
相关产品推荐
相关产品推荐

