我是Java中正则表达式的新手,我需要验证字符串是否只有字母数字字符,逗号,撇号和句号(句点)。其他任何东西都应该等于假。
任何人都可以提供任何指示吗?
我现在有这个,我认为字符串中的每个字符都有字母数字:
Pattern p = Pattern.compile("^[a-zA-Z0-9_\\s]{1," + s.length() + "}");
由于
Albany Caxton先生
答案 0 :(得分:10)
我是Java中正则表达式的新手,我需要验证字符串是否有字母数字字符,逗号,撇号和完全停止(句点)。
我建议您使用\p{Alnum}
类来匹配字母数字字符:
Pattern p = Pattern.compile("[\\p{Alnum},.']*");
(我注意到你在当前模式中包含\s
。如果你也想允许空格,只需在字符类中添加\s
。)
[...]
\p{Alnum}
字母数字字符:[\p{Alpha}\p{Digit}]
[...]
您不需要包含^
和{1, ...}
。只需使用Matcher.matches
或String.matches
等方法来匹配完整模式。
另请注意,您无需在字符类(.
... [
)中转义]
。
答案 1 :(得分:1)
Pattern p = Pattern.compile("^[a-zA-Z0-9_\\s\\.,]{1," + s.length() + "}$");
答案 2 :(得分:0)
保持简单:
String x = "some string";
boolean matches = x.matches("^[\\w.,']*$");