Java模式\p{InBasicLatin}允许来自韩语和泰米尔语的ASCII以外的字符
我试图只接受来自ASCII[\p{InBasicLatin}]的字符,该字符假定允许在0000-007F之间的unicode范围内的字符,但我发现它也允许来自泰米尔语和韩语等语言的字符Java模式\p{InBasicLatin}允许来自韩语和泰米尔语的ASCII以外的字符,java,regex,Java,Regex,我试图只接受来自ASCII[\p{InBasicLatin}]的字符,该字符假定允许在0000-007F之间的unicode范围内的字符,但我发现它也允许来自泰米尔语和韩语等语言的字符 public class App { public static void main(String args[]) throws UnsupportedEncodingException { Pattern pattern = Pattern.compile("^[\\P{InB
public class App {
public static void main(String args[]) throws UnsupportedEncodingException {
Pattern pattern = Pattern.compile("^[\\P{InBasicLatin}]+$");
while (true) {
Scanner in = new Scanner(System.in, "UTF-8");
String word = in.nextLine();
System.out.println(word);
System.out.println(pattern.pattern());
System.out.println(word.length());
System.out.println(pattern.matcher(word).matches());
}
}
}
输出: 안녕하세요 안녕하세요 ^[\P{InBasicLatin}]+$ 5. 真的 āśźŽȏ āśźŽȏ ^[\P{InBasicLatin}]+$ 5. 真的 வணக்கம் வணக்கம் ^[\P{InBasicLatin}]+$ 7. 真的
我哪里出错了。
“^[\\p{InBasicLatin}]+$”
是因为大写字母p
而不是BasicLatin中的所有字符。您需要“^[\\p{InBasicLatin}]+$”
小写p
所以,它不是“它也允许来自泰米尔语和韩语等语言的字符”,而是“它只允许来自泰米尔语和韩语等语言的字符”(以及其他语言)好的,我在你提到的文档中发现了这一点。谢谢