将C#正则表达式转换为JavaScript正则表达式

3
以下正则表达式适用于使用C# reg ex: ``` ^(?#_surveyForm.+) | #(?:(?http.+\.\w{3,4}).+_surveyForm=\w+)$ ```
它能匹配以下字符串:
#http://localhost/tableaux-p145717.htm=&_surveyForm=second

或者

#_surveyForm=second

我使用了命名捕获组。

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

我该如何使这个正则表达式符合Javascript标准?

提前致谢,

R。

2个回答

4

正如你所说的,JavaScript不支持命名捕获。你需要将它们改为“普通”的捕获组,并通过数字而非名称进行引用:

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

您还应该知道,在JavaScript中,\w只匹配ASCII字母数字字符,而在.NET中,它匹配Unicode字母数字字符。


0
你可以使用类似以下的代码:
/^#(http.+.\w{3,4}.+)?_surveyForm=(\w+)$/

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接