gpt4 book ai didi

java - 排除 Java 正则表达式中带有正斜杠的单词

转载 作者:行者123 更新时间:2023-12-01 17:35:11 25 4
gpt4 key购买 nike

我试图仅允许某些单词通过 Java 中的正则表达式过滤器,即:

Pattern p = Pattern.compile("^[a-zA-Z0-9\\s\\.-_]{1," + s.length() + "}$");

但我发现它允许通过 140 公里/小时,因为未处理正斜杠。理想情况下,不应允许使用该词。

有人可以建议修复我当前的版本吗?

我是正则表达式的新手,还没有完全理解它。

正则表达式位于 utils 类方法中,如下所示:

public static boolean checkStringAlphaNumericChars(String s) {
s = s.trim();
if ((s == null) || (s.equals(""))) {
return false;
}

Pattern p = Pattern.compile("^[a-zA-Z0-9\\s\\.-_]{1," + s.length() + "}$");
// Pattern p = Pattern.compile("^[a-zA-Z0-9_\\s]{1," + s.length() + "}");
Matcher m = p.matcher(s);
if (m.matches()) {
return true;
}
else {
return false;
}
}

我想允许带有下划线、空格、句点、减号的字符串。并确保接受包含字母数字(如 123.45 或 -500.00)的字符串,但不接受 5,000.00。

最佳答案

是否因为连字符在字符集中是倒数第二个,因此定义了从 '.''_' 的范围,这包括'/'

试试这个:

Pattern p = Pattern.compile("^[a-zA-Z0-9\\s\\._-]$");

此外,NullUserException 是正确的,因为不需要 {1,"+ s.length() + "}。事实上,您的表达式以 '^' 开始并以 '$' 结束,这将确保整个字符串被消耗。

最后,您可以使用 \w 代替 [a-zA-Z_0-9],将表达式简化为 "^[\\w\\s\\.-]$"

关于java - 排除 Java 正则表达式中带有正斜杠的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com