Regex 正则表达式来提取URL的字母数字部分?

Regex 正则表达式来提取URL的字母数字部分?,regex,Regex,给定任何URL,例如: https://stackoverflow.com/v1/summary/1243PQ/details/P1/9981 如何提取URL的数字或字母数字部分?即,上述url中的以下字符串: 1. v1 2. 1243PQ 3. P1 4. 9981 换言之,一个正则表达式,用于从至少有1个数字和0个或更多字母表字符的字符串(URL)中提取字符串,这些字符串由'/'分隔 我试图捕获一个重复组(^[a-zA-Z0-9]+)+和([a-zA-Z]{0100}[0-9]{110

给定任何URL,例如:

https://stackoverflow.com/v1/summary/1243PQ/details/P1/9981
如何提取URL的数字或字母数字部分?即,上述url中的以下字符串:

1. v1
2. 1243PQ
3. P1
4. 9981
换言之,一个正则表达式,用于从至少有1个数字和0个或更多字母表字符的字符串(URL)中提取字符串,这些字符串由
'/'
分隔


我试图捕获一个重复组
(^[a-zA-Z0-9]+)+
([a-zA-Z]{0100}[0-9]{1100})+
,但没有成功。事后看来,直觉确实认为这不应该奏效。我不确定如何在一组而不仅仅是单个角色上匹配模式

我相信这应该对你有用:

(\d*\w+\d+\w*)
编辑:实际上,这应该足够了

(\w+\d+\w*)


如果我了解你真正想要什么:

提取仅包含数字或数字后跟字母的零件

然后,;我可以推荐这个正则表达式:

\b[a-zA-Z]*[0-9]+[a-zA-z]*\b
\b[a-zA-z0-9]*[0-9]+[a-zA-Z0-9]*\b

我使用
\b
断言单词边界或部分的位置。
因为数字是必需的,字母可以在我使用上述正则表达式之前或之后出现

如果不需要以下字母,则我可以建议使用此正则表达式:

\b[a-zA-Z]*[0-9]+[a-zA-z]*\b
\b[a-zA-z0-9]*[0-9]+[a-zA-Z0-9]*\b

试试
\/[a-zA-Z]*\d+[a-zA-Z0-9]*

说明:

\/
-按字面意思匹配
/

[a-zA-Z]*
-0多个字母

\d+
-1+位-正因为如此,我们至少需要一位数字

[a-zA-Z0-9]*
-0+字母或数字


它将在开始时与
/
一起捕获,因此您需要对其进行修剪。

好的,您可以这样做:

(\w*\d+\w*) with the g (global) regex option
在示例URL上,它如下所示:
const regex=/(\w*\d+\w*)/g;
常量url=https://stackoverflow.com/v1/summary/1243PQ/details/P1/9981';

console.log(url.match(regex))
我已经添加了尝试。在把这个放在这里之前,我已经讨论了一些堆栈溢出问题。谢谢。这很有效。但是你为什么要把
\w+
放进去?它似乎也适用于
(\d*\w*\d+\w*)
。没有具体原因,在这种情况下,它确实应该产生相同的结果。+和*之间的差异是“零或一”与“零或多”。这里我们最多处理一个“单词字符”加上一个数字,所以+和*都会激活。嗯。。。这就是单词边界的用途。直到现在我才明白。谢谢它将因
/1a2b
而失败,它将仅捕获
/1a