作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图仅允许某些单词通过 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/
我是一名优秀的程序员,十分优秀!