正则表达式以获取Javascript中具有复杂结构的字符串

正则表达式以获取Javascript中具有复杂结构的字符串,javascript,regex,Javascript,Regex,我有一个链接看起来像: var str = "http://example.com/ep-1-29838.html"; 我只想拿到29838英镑 我试过: str = str.replace(^([-])\/([.html])$\w+, ""); 我对正则表达式没有太多经验。谢谢。匹配最后的数字,后跟点和文件扩展名: var str=”http://example.com/ep-1-29838.html"; console.log( str.match(/\d+(?=\。\w+$)/) )

我有一个链接看起来像:

var str = "http://example.com/ep-1-29838.html";
我只想拿到29838英镑

我试过:

str = str.replace(^([-])\/([.html])$\w+, "");

我对正则表达式没有太多经验。谢谢。

匹配最后的数字,后跟点和文件扩展名:

var str=”http://example.com/ep-1-29838.html";
console.log(
str.match(/\d+(?=\。\w+$)/)

);这可能是一种方法:

"http://example.com/ep-1-29838.html".match(/(\d+)\.html$/)
它的基本意思是“在一个组中匹配并存储一个或多个数字(0-9),然后在字符串的末尾后跟.html”


返回的值是一个由两个元素组成的数组,您对第二个元素感兴趣。

如果正则表达式如此严格,您不必使用它-我更喜欢这样:

var str=”http://example.com/ep-1-29838.html";
str=str.split('-')/*在连字符上拆分字符串*/
.pop()/*获取生成的数组的最后一个*/
.replace('.html','');/*现在删除文件扩展名*/

console.log(str)文件名是否始终遵循此结构?@31piy当然。此文件名始终具有相同的结构当数字始终位于
.html
之前时,您可以尝试使用此正则表达式
([0-9]+)\。html
@wayneOS很好!通常情况下不是相反吗?如果可以的话,使用正则表达式是很好的,但是如果不能,那么就必须求助于特定于语言的字符串操作我喜欢方法
match
来解决我的问题。它很特别。您的解决方案在任何情况下都是通用的。谢谢。@CertainPerformance我想所有开发人员的工作方式都是不同的-如果没有实质性的性能损失(我没有检查这个案例,但我对此表示怀疑),那么可读性对我来说每次都是赢家。很酷的解决方案,但要取得更大的进步。你的解决方案非常聪明!