1

我试图在我的应用程序中使用这个正则表达式,但由于某种原因,C# 不会接受它作为一个完整的字符串。

如果我没记错的话,它与表达式中的几个双引号有关,但在我看来它们好像被转义了。

这是正则表达式:

^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$

这就是我试图声明它的方式:

[RegularExpression(@"^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$")]

对不起,格式,我不知道如何最好地显示它......

重申一下,当将其放在双引号中时,C# 不会将其识别为字符串。

如何在 C# 中使用此表达式?

4

2 回答 2

3

使用字符串文字@并将双引号加倍,例如@"a ""b"" c"

于 2013-10-23T20:45:42.297 回答
0

你必须逃脱两次。一次用于\和一次用于您的正则表达式。

每个转义序列应该是

\\d

或者

于 2013-10-23T20:44:37.670 回答