如何解决正则表达式-JavaScript,将正则表达式与函数的第二个参数匹配
我有一个名为waitForCompletion(arg1,value,waitTime)
的函数;
我想找到一种方法来知道我在函数的第二个参数上,即waitForCompletion(arg1,
用例:-当用户开始键入函数名称并在第二个参数上时,我必须触发一些智能提示,以显示第二个参数可以接受的值的智能提示。
我目前拥有以下内容,但它仅与函数名称匹配并触发所有参数的智能感知,但它仅需对第二个参数执行此操作。
let completionMatch = textUntilPosition.trim().match(/(^waitForCompletion)|(\swaitForCompletion)/);
if(completionMatch){ //trigger intellisense }
我相信我们必须在函数名称后匹配(
,但是以某种方式忽略第一个参数,然后在第一个参数之后匹配,
,这就是我可以确保模式匹配。
注意:-textUntilPosition会向我提供文本,直到光标所在的位置,即如果光标位于第二个自变量waitForCompletion(arg1,
中,如果光标位于第一个自变量中,则是waitForCompletion(arg1
解决方法
当用户开始键入函数名称并在第二个参数上时,我必须触发一些智能提示,以显示第二个参数可以接受的值的智能提示。
您不能使用简单的正则表达式来执行此操作,需要JavaScript解析器。有几种可用的开放源代码,例如Espree(ESLint使用的解析器)和Acorn。
其原因是JavaScript语法不是“正则表达式”中的“ regular”。例如,考虑:
waitForCompletion(x ? example(1,2) : y,
您的正则表达式必须了解条件运算符(? :
,以便知道您当时在waitForCompletion
的第二个参数中,而不是在向{{ 1}}。这只是参数可能比单个标识符或文字复杂得多的众多方式之一。
我不想似乎对此感到困惑或对此毫无帮助。这是一个示例,该示例在许多情况下都可以使用您所描述的简单参数进行工作,但是正如我在上面(以及下面的评论)中所述,它将失败,并出现很多其他输入:
example
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。