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

Extract a specific-length number from a string javascript

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

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

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

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

幸运的你!您正在使用 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)

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