基于Java的正则表达式,允许使用字母数字字符和',和

时间:2011-06-14 11:52:40

标签: java regex

我是Java中正则表达式的新手,我需要验证字符串是否只有字母数字字符,逗号,撇号和句号(句点)。其他任何东西都应该等于假。

任何人都可以提供任何指示吗?

我现在有这个,我认为字符串中的每个字符都有字母数字:

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

由于

Albany Caxton先生

3 个答案:

答案 0 :(得分:10)

  

我是Java中正则表达式的新手,我需要验证字符串是否有字母数字字符逗号撇号完全停止(句点)。

我建议您使用\p{Alnum}类来匹配字母数字字符:

Pattern p = Pattern.compile("[\\p{Alnum},.']*");

(我注意到你在当前模式中包含\s。如果你也想允许空格,只需在字符类中添加\s。)

来自documentation of Pattern

  

[...]

     

\p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]

     

[...]


您不需要包含^{1, ...}。只需使用Matcher.matchesString.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.,']*$");