文字列に日本語が含まれるとエラーとしたいのですが
「日本語ってなに?」というはなしになりませんか。\u3000
は日本語でしょうか? ニホン
は日本語でしょうか? π
は?
使用を許可する文字にマッチさせるほうがよっぽど簡単なのでわ。
java
1import org.junit.jupiter.api.Test;
2import java.util.Arrays;
3
4public class Hoge {
5 @Test
6 public void hoge() {
7 final String pattern = "^[\u0000-\u007f]*$";
8
9 Arrays.asList(
10 "あああ",
11 "あああaa",
12 "aaaあああ",
13 "aaaあああaaa",
14 "",
15 "aaa",
16 "aa bbb",
17 "aa\tnbbb",
18 "aa\u3000bbb",
19 "1234567890",
20 "*&^*#^!(!*&",
21 "[]{}..,,<>",
22 " ",
23 "ニホン",
24 "π"
25 ).stream().forEach(text -> {
26 final String message = text.matches(pattern) ? "OK" : "日本語は使用しないでください";
27 System.out.println(String.format("<%s> %s", text, message));
28 });
29 }
30}
<あああ> 日本語は使用しないでください
<あああaa> 日本語は使用しないでください
<aaaあああ> 日本語は使用しないでください
<aaaあああaaa> 日本語は使用しないでください
<> OK
<aaa> OK
<aa bbb> OK
<aa nbbb> OK
<aa bbb> 日本語は使用しないでください
<1234567890> OK
<*&^*#^!(!*&> OK
<[]{}..,,<>> OK
< > OK
<ニホン> 日本語は使用しないでください
<π> 日本語は使用しないでください