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

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

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

它匹配字符串,如:

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

要么

 #_surveyForm=second 

我使用了命名捕获组。

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

如何使该注册表符合javascript标准?

提前致谢,

R.

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

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

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

你可以使用类似的东西:

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

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

这个表达式可能对你更好:

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