java正则表达式中的正斜杠问题

时间:2013-09-19 12:24:11

标签: java regex

我需要以下数据的正则表达式:

所有数字,所有字母或数字和字母组合(包括特殊字符)允许:

@ . – ‘ ? , ( ) : ; ! * $  _  =  + ^  &  #

和法语Unicode口音字符。

请帮忙。我使用以下正则表达式,它适用于其他字符,但它以某种方式允许正斜杠(/)

VALIDATOR_STRING = "^[A-Za-z0-9éÉèÈçÇâÂêÊôÔ@.'#,-?:;!*$_=+^&()]+$";

1 个答案:

答案 0 :(得分:7)

如果您在字符类中使用短划线-(例如A-Z中),则表示范围(在此示例中,AZ之间的每个大写字母)。

因此,您允许包含正斜杠的,-?之间的范围。如果您查看http://www.asciitable.com,您会看到此范围包含以下所有字符:, . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

要避免此行为,请将短划线放在字符类中的第一个或最后一个字符:

VALIDATOR_STRING = "^[-A-Za-z0-9éÉèÈçÇâÂêÊôÔ@.'#,?:;!*$_=+^&()]+$";