Javascript中用于查找参数的正则表达式

Javascript中用于查找参数的正则表达式,javascript,regex,postgresql,Javascript,Regex,Postgresql,我试图用javascript编写一个正则表达式,以捕获PostgreSQL字符串中的所有命名参数,并将它们放入表中 假设我们有 var query="SELECT table.data FROM table JOIN table2 ON table2.id=table.id_tab2 WHERE table2.field <> :parm1::int GROUP BY table.data HAVING table.data position(:docType::text in do

我试图用javascript编写一个正则表达式,以捕获PostgreSQL字符串中的所有命名参数,并将它们放入表中

假设我们有

var query="SELECT table.data FROM table JOIN table2 ON table2.id=table.id_tab2 WHERE table2.field <> :parm1::int GROUP BY table.data HAVING table.data position(:docType::text in document_type) <> 0

var tab=new Array();

//
我需要rs将所有参数放入选项卡:param1::int和docType::text 我试着自己做,但没有成功:
像这样的事情\w+:\w+

像这样的东西\w+:\w+/p>和:[a-zA-Z0-9]+:[a-zA-Z0-9]+和:[a-zA-Z0-9]+:[a-zA-Z0-9]+

在a-Z之间可能会有奇怪的事情,所以只需将[a-Z]与不区分大小写或[a-zA-Z]一起使用即可。我想你可能想要一个全球匹配,找到所有结果。多行是另一回事,它让人感觉到。匹配\n我所看到的对您没有帮助。试试这个:

在a-Z之间可能会有奇怪的事情,所以只需将[a-Z]与不区分大小写或[a-zA-Z]一起使用即可。我想你可能想要一个全球匹配,找到所有结果。多行是另一回事,它让人感觉到。匹配\n我所看到的对您没有帮助。试试这个:

我不懂postgreSQL,但我想我已经了解了你问题的要点


这是对的吗?

我不懂postgreSQL,但我想我知道你问题的要点了

这是否正确:?

当我尝试:[^::+:[^::+:[^:+]和:[^::+:[^:+]时,我看不出有什么区别-冒号在两种情况下都是匹配的

然而我找到了另一种方法

(?!:)([a-z0-9_-]+::[a-z0-9_-]+)
工作完美。 第一部分?当我尝试:[^::+:[^::+]和:[^::+:[^:+]时,我看不出有什么区别-冒号在两种情况下都是匹配的

然而我找到了另一种方法

(?!:)([a-z0-9_-]+::[a-z0-9_-]+)
工作完美。
第一部分?那正是我想要的。谢谢:我在角色类中看到了-和u,这是不匹配的。postgres命名参数中是否允许使用这些字符?@Qsario:在哪个字符类中?顺便说一句,据我所知,在postgresql类型名中不允许使用破折号,下划线由\w匹配。我看不出有什么问题。我在看他在regexr中最初的角色类。看起来好像不匹配,但我可能只是累了。这正是我想要的。谢谢:我在角色类中看到了-和u,这是不匹配的。postgres命名参数中是否允许使用这些字符?@Qsario:在哪个字符类中?顺便说一句,据我所知,在postgresql类型名中不允许使用破折号,下划线由\w匹配。我看不出有什么问题。我在看他在regexr中最初的角色类。看起来我们不匹配,但我可能只是累了。这是我最喜欢的。不同的是,我需要的参数没有:on begin尝试:[a-z0-9_-]+::[a-z0-9_-]+,但效果与我所希望的一样。不同的是,我需要的参数没有:on begin尝试使用:[a-z0-9_-]+:[a-z0-9_-]+:[a-z0-9_-]+,但效果是相同的,没有:在开始时?regex:[^::+:[^:]+只匹配第一个冒号后的文本,即在:param1::int中匹配param1::int,refddle可能没有做到这一点。但是,如果还需要冒号,请更改backreference,如下所示::[^:]+:[^:]+。如何在没有:开头的情况下执行此操作?正则表达式:[^:::+:[^::]+只匹配第一个冒号后的文本,即在:param1::int中匹配param1::int,refidle可能没有明确说明这一点。但是,如果还需要冒号,请更改backreference,如下所示::[^:]+:[^:]+。