如何使用 java 在字符串中只允许 !@#$%^&*

我只想允许上面提到的特殊字符。


我试过这个


private final Pattern hasSpecialChar = Pattern.compile("[!@#$%^&*]");

if (!hasSpecialChar.matcher(password).find()) {

    return "String allows only !@#$%^&* special characters";

}

但它也允许其他特殊字符。


任何人都可以帮助我创建一个合适的正则表达式。


慕森卡
浏览 142回答 3
3回答

烙印99

尝试这个:private final Pattern hasSpecialChar = Pattern.compile("[^A-Za-z0-9!@#$%^&*]+");if (hasSpecialChar.matcher(password).find()) {    return "String allows only !@#$%^&* special characters";}

BIG阳

Mabe 下面的代码片段将帮助您:private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");if (hasSpecialChar.matcher(password).find()) {        return "String allows only !@#$%^&* special characters";}

饮歌长啸

您的代码片段正在查看特殊字符是否至少出现一次。对此的一个简单修正是否定检查——即寻找至少一个不在可接受字符集中的非特殊字符:private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");if (hasSpecialChar.matcher(password).find()) {    return "String allows only !@#$%^&* special characters";}请注意,此答案假定您只想允许这些特殊字符,而在输出中不允许使用其他字母数字字符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java