我想实现一个在以下情况下返回 true 的正则表达式:
例如:
我开始实现这个
private static final String ARTICLE_VALID_FORMAT = "\\d";
private static final Pattern ARTICLE_VALID_FORMAT_PATTERN = Pattern.compile(ARTICLE_VALID_FORMAT);
private boolean isArticleHasValidFormat(String article) {
return StringUtils.isNotBlank(article) && ARTICLE_VALID_FORMAT_PATTERN.matcher(article).matches();
}
现在,如果文章只有数字,它会返回 true。但我也想测试它是否不全是 0。
怎么做?
谢谢
最佳答案
您可以使用:
private static final String ARTICLE_VALID_FORMAT = "[0-9]*?[1-9][0-9]*";
这意味着:
?
意味着在进入下一部分之前匹配尽可能少或者,正如 Joachim Sauer 在评论中建议的那样:
private static final String ARTICLE_VALID_FORMAT = "0*[1-9][0-9]*";
这意味着:
如果你想在没有正则表达式的情况下做到这一点,你可以使用(以及许多其他方式):
string.chars().allMatch(c -> c >= '0' && c <= '9')
&& string.chars().anyMatch(c -> c != '0')
https://stackoverflow.com/questions/67420752/
相关文章:
python - 如何处理来自 binance websocket 的多流数据?
mongodb - 使用 GridFS 在 MongoDB 中存储图像是否有效?
reactjs - 创建一个可以通过函数调用显示的 React 组件(如 react-toastif
javascript - 这些 ES6 import 语句之间有什么区别?
java - 就线程或不同请求而言,Spring 的 SecurityContext 行为是什么?
javascript - 获取具有类的下一个元素(不是子元素或兄弟元素)
javascript - 使用 ts-node 的 Typescript 声明合并无法按预期工作