十六进制数字正则表达式不足?

时间:2018-01-19 01:14:48

标签: c# regex unicode

我正在制定一个正则表达式,它将匹配所有字母(包括中文)和一些选定的标点符号(也包括中文)。

这是我的正则表达式

"^[\p{L}\x{FF01}-\x{FF1E}\x{3008}-\x{30A9}0-9\s@#$^&*()+=,.?`~_:;|""-{}[]+$"

抛出十六进制数字不足的异常。有人可以告诉我它有什么问题吗?我在网上尝试了一些正则表达式测试人员,它在那里工作。

我使用c#的Regex类来解析它

1 个答案:

答案 0 :(得分:0)

来自docs

  

\x nn使用十六进制表示来指定一个字符(nn恰好包含两个数字)。

我认为你想要的是\u

  

\u nnnn使用十六进制表示形式匹配Unicode字符(正好是四位数,由nnnn表示)。

试试这个:

@"^[\p{L}\uFF01-\uFF1E\u3008-\u30A90-9\s@#$^&*()+=,.?`~_:;|""-{}[]+$"