将 c# 正则表达式转换为 javascript 正则表达式

Posted

技术标签:

【中文标题】将 c# 正则表达式转换为 javascript 正则表达式【英文标题】:Convert c# regex to javascript regex 【发布时间】:2011-10-02 16:47:18 【问题描述】:

使用 C# reg ex 可以使用以下正则表达式:

^(?<survey>#_surveyForm.+)|#(?:(?<url>http.+\.\w3,4).+_surveyForm=\w+)$

匹配字符串如:

#http://localhost/tableaux-p145717.htm=&_surveyForm=second

#_surveyForm=second

我使用命名捕获组。

我知道 javascript 没有利用命名捕获组(而是使用 \1、\2 等)。此外语法与上面的略有不同。

我怎样才能使 reg ex 符合 javascript 标准?

提前致谢,

R.

【问题讨论】:

【参考方案1】:

如您所说,JavaScript 不支持命名捕获。您必须将它们更改为“正常”捕获组,并按编号而不是按名称引用它们:

/^(#_surveyForm.+)|#(?:(http.+\.\w3,4).+_surveyForm=\w+)$/

您还应该知道\w 仅匹配 JavaScript 中的 ASCII 字母数字,而它匹配 .NET 中的 Unicode alnums。

【讨论】:

【参考方案2】:

你可以使用类似的东西:

/^#(http.+.\w3,4.+)?_surveyForm=(\w+)$/

您的 URL 将在第一个捕获组中,调查在第二个中。

这个表达式可能更适合你:

/^#(https?:\/\/\S*)?\b_surveyForm=(\w+)$/

【讨论】:

以上是关于将 c# 正则表达式转换为 javascript 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 将 C# 正则表达式转换为 JavaScript 正则表达式的量词的目标无效

如何将 C# 正则表达式转换为打字稿正则表达式?

将 C# 正则表达式代码转换为 Java

Swift 将 javascript 正则表达式转换为 ios 正则表达式

如何将 javascript 正则表达式转换为安全的 Java 正则表达式?

将 Javascript 正则表达式转换为 PHP