Javascript 如何检查字符串是否为有效的Figma链接?

Javascript 如何检查字符串是否为有效的Figma链接?,javascript,regex,figma-api,Javascript,Regex,Figma Api,我正在NodeJS上构建一个使用figmaapi的应用程序,我需要检查用户传递的字符串是否是有效的Figma链接。我目前正在使用这个简单的正则表达式来检查字符串: /^https\:\/\/www.figma.com\/.*/i 然而,它匹配了来自figma.com的所有链接,甚至是主页,而不仅仅是指向文件和原型的链接。以下是应匹配的Figma链接示例: https://www.figma.com/file/OoYmkiTlusAzIjYwAgSbv8wy/Test-File?node-id=

我正在NodeJS上构建一个使用figmaapi的应用程序,我需要检查用户传递的字符串是否是有效的Figma链接。我目前正在使用这个简单的正则表达式来检查字符串:

/^https\:\/\/www.figma.com\/.*/i
然而,它匹配了来自
figma.com
的所有链接,甚至是主页,而不仅仅是指向文件和原型的链接。以下是应匹配的Figma链接示例:

https://www.figma.com/file/OoYmkiTlusAzIjYwAgSbv8wy/Test-File?node-id=0%3A1
此外,如果这是一个原型链接,则匹配应该是正的,路径中有
proto
而不是
file

此外,由于我使用的是Figma API,因此同时提取URL的必要部分(如文件ID和节点ID)将非常有用。

TL;博士 ✅ 使用此表达式可以捕获四个最重要的组(类型、文件id、文件名和URL属性),并从中开始工作

/^(?:https:\/\/)?(?:www\.)?figma\.com\/(file|proto)\/([0-9a-zA-Z]{22,128})(?:\/?([^\?]+)?(.*))?$/

从文件中 这是Figma在其上提供的正则表达式代码:


但是,它在JS中不能作为斜杠使用,应该用反斜杠转义一个点,留给我们以下表达式:“但是斜杠部分适用于任何使用
/
作为正则表达式分隔符的情况。至于
,当在字符类之外使用时,所有正则表达式引擎都会将其解释为“任何字符”。这不是特定于JS的-文档是完全错误的。我还注意到它有一个
$
锚,但没有
^
锚,这看起来很奇怪。谢谢你告诉我,我不是regex的专业人士。我会告诉Figma团队更正文档!关于
^
主播,你是对的,我没有注意到它不在那里。我会改进答案。我认为
[w.-]+
应该是
[\w.-]+
@Toto good point!那么它会匹配任何
figma.com
子域吗?目前它只检查
www.
,因为目前Figma不使用任何其他子域作为文件和原型链接。但是,随着我对这一点进行更多的实验,我认为最好在捕获组中使用
(www.)
,因为目前它将匹配
wwwww.
,这不是我们想要的。对不起,我的意思是
(www\)
/https://([w.-]+.)?figma.com/(file|proto)/([0-9a-zA-Z]{22,128})(?:/.*)?$/