从字符串javascript中提取特定长度的数字

问题描述 投票:-1回答:1

使用javascript的第一枪。我需要从完整网址中提取歌曲ID。我知道id总是9个字符长,并且总是在文本track/之后,但是我不知道如何剥离其他所有内容。

我曾尝试使用this.value.replace(/[^0-9]/g, "");删除所有非数字字符,但它仍然留下可变数量的其他数字,具体取决于嵌入框架的宽度和高度以及html颜色代码。

是否有简单的内联方法从字符串中仅获取9位数字?

这个想法是,用户可以将嵌入的代码粘贴到文本框中,它将自动删除除歌曲ID之外的所有内容,然后将其保存在数据库中。

javascript regex string replace inline
1个回答
1
投票

幸运的你!您正在使用Javascript,这是少数几种语言,其正则表达式引擎支持可变长度的正向隐式。您可以使用正则表达式

(?<=\btracks\/.*)(?<!\d)\d{9}(?!\d)

Demo

正则表达式引擎执行以下操作:

(?<=          # begin a positive lookbehind
  \btracks\/  # match the string 'tracks/' not preceded by a word char
  .*          # match 0+ characters
)             # end positive lookbehind
(?<!\d)       # negative lookbehind to match a digit 
\d{9}         # match 9 digits
(?!\d)        # negative lookahead to match a digit

或者(并且在不支持可变长度正向隐藏的语言中,您可以使用

\btracks\/.*(?<!\d)(\d{9})(?!\d)

在这种情况下,捕获组1将保留所需的9位数字字符串(如果存在匹配项)。

© www.soinside.com 2019 - 2024. All rights reserved.