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

时间:2019-06-28 08:03:46

标签: java regex

我只允许上述特殊字符。

我尝试过

private final Pattern hasSpecialChar = Pattern.compile("[!@#$%^&*]");
if (!hasSpecialChar.matcher(password).find()) {
    return "String allows only !@#$%^&* special characters";
}

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

任何机构都能帮助我创建合适的正则表达式吗?

3 个答案:

答案 0 :(得分:2)

尝试一下:

@Service
public class VirtualControllerServiceImpl implements
        VirtualControllerService {
    @Override
    @Transactional
    public JsonHost createVifcHostForWebApi(VirtualController
                                                    virtualController) {
        JsonHost jsonHost = new JsonHost();
        jsonHost.setIP(virtualController.getIpAddress());
        jsonHost.setUser(environment.getProperty("VIFC_WEBAPI_USER"));



        jsonHost.setPassword(environment.getProperty("VIFC_WEBAPI_PASSWORD"));


        return jsonHost;
    }

}

答案 1 :(得分:1)

摘录下的内容可能会帮助您

private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");
if (hasSpecialChar.matcher(password).find()) {
        return "String allows only !@#$%^&* special characters";
}

答案 2 :(得分:1)

您的代码段希望查看特殊字符是否至少出现一次。

对此的一个简单更正是取消检查-即寻找至少一个不在接受字符集中的非特殊字符:

private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");
if (hasSpecialChar.matcher(password).find()) {
    return "String allows only !@#$%^&* special characters";
}

请注意,此答案假设您只想允许这些特殊字符,而在输出中没有其他字母数字字符。