为什么正则表达式 \pL+\pM+
不适用于英语?
为什么下面的第一个示例结果为 false,而第二个示例结果为 true?
System.out.println(Charset.forName("UTF-8").encode("suren")
.asCharBuffer().toString().matches("\\PL+\\PM+"));
System.out.println(Charset.forName("UTF-8").encode("स्वागत")
.asCharBuffer().toString().matches("\\PL+\\PM+"));
基本上我需要一个正则表达式来限制字符串中的unicode字符(世界上的任何语言)。
最佳答案
你想要
"^[\\p{Letter&}\\p{Mark}]+$"
您的正则表达式需要一个标记(\PM+
),而您只想允许它。另请注意 anchor 。
一般说明:我建议使用 Unicode 字符属性的长形式。它使表达式更具可读性。
关于java - 为什么正则表达式\pL+\pM+ 不适用于英语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352945/