我在哪里错了\ P {Cn}?

时间:2017-09-05 19:53:34

标签: .net regex

我试图匹配一个只有有效字符的字符串,然后我遇到了\ P {Cn}我理解为匹配指定的字符。

https://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF

在这里,我看到0x0870-0x89F是一个未分配的"区域" (不知道该怎么称呼它。)

当我测试一个匹配对这些字符的单个/多个失败时,它确实会失败"\u0880",但是如果它包含一个分配的字符"\u0880 letters",那么它就不会匹配。

我对这种情况有什么误解?我很高兴知道!

1 个答案:

答案 0 :(得分:1)

使用具有量词的锚:

^\P{Cn}*$

或 - 如果您不想匹配空字符串:

^\P{Cn}+$

匹配:

  • ^ - 字符串的开头
  • \P{Cn}* - 除Cn类别
  • 以外的任何0 +字符
  • $ - 字符串结尾(或\z以匹配结尾)。