从字符串中提取特定长度的数字 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 保留(如果有匹配项)。
第一枪在 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 保留(如果有匹配项)。