将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+)$/