Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java模式\p{InBasicLatin}允许来自韩语和泰米尔语的ASCII以外的字符_Java_Regex - Fatal编程技术网

Java模式\p{InBasicLatin}允许来自韩语和泰米尔语的ASCII以外的字符

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

我试图只接受来自ASCII[\p{InBasicLatin}]的字符,该字符假定允许在0000-007F之间的unicode范围内的字符,但我发现它也允许来自泰米尔语和韩语等语言的字符

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


所以,它不是“它也允许来自泰米尔语和韩语等语言的字符”,而是“它只允许来自泰米尔语和韩语等语言的字符”(以及其他语言)

好的,我在你提到的文档中发现了这一点。谢谢