我是java新手,我想制作一个输入检查器类,当您输入一个值(无论是int、string还是double)时,它会检查它是否不包含非法字符,如果包含,则返回false。
现在,即使它可能很糟糕并且没有多大意义,我还是设法编写了一个代码来做到这一点,问题是它给了我一个接近索引 17 异常的非法字符范围。
这是代码:
public class InputChecker {
public InputChecker()
{
}
public boolean checkString(String string)
{
Pattern pattern = Pattern.compile("[1234567890,.-\\!'~#\\@*+%{}<>\\[\\]|\"\\_^]");
Matcher matcher = pattern.matcher(string);
return matcher.find();
}
public boolean checkDouble(double theDouble)
{
Pattern pattern = Pattern.compile("[,-!'~#@*+%{}<>\\[\\]|\"\\_^]");
String sDouble = String.valueOf(theDouble);
Matcher matcher = pattern.matcher(sDouble);
return matcher.find();
}
public boolean checkInt(int theInt)
{
Pattern pattern = Pattern.compile("[,-!'~#@*+%{}<>\\[\\]|\"\\_^]");
String sInt = String.valueOf(theInt);
Matcher matcher = pattern.matcher(sInt);
return matcher.find();
}
}
Run Code Online (Sandbox Code Playgroud)
每个正则表达式都有相同的错误。您定义字符类:
[...]
Run Code Online (Sandbox Code Playgroud)
你-在其中使用 s 。在字符类中,-指定一个范围:左右两个字符的 ascii 值之间(包括)的所有值。
看来您确实希望将其-作为角色类的一部分。在这种情况下,只需将其移到前面(其他也一样;注意:我删除了不必要的反斜杠):
"[-1234567890,.!'~#@*+%{}<>\\[\\]|\"_^]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15100 次 |
| 最近记录: |