Java Regex语法(除了我指定的特殊字符外的所有字符)

时间:2011-07-13 14:42:05

标签: java-ee

例如:
如果我写#hello @#%^它会返回false,因为它包含一个我禁止的特殊字符。
如果我打招呼,那就是真的。
如果我写$,那将是假的。
我要排除的字符列表类似于:`〜! @#$%^& * {} []“':;,。<>?/ | \\我只需要一个正则表达式来检测是否有任何后续字符在字符串中,如果它们将返回false。谢谢和抱歉非正式。

的问候,
萨姆

1 个答案:

答案 0 :(得分:0)

根据您的意图,最简单的方法可能是枚举您 想要允许的字符,la:

if(myString.matches("[a-zA-Z0-9_ ]*")) ...

这将允许包含下划线和空格的任何字母数字字符串。如果你真的需要只匹配包含明确列举的禁用字符列表的字符串,那么你必须枚举它们并转义那些特殊的正则表达式字符:

import java.util.regex.Pattern;

...

String forbiddenCharacters = "`~!@#$%^&*{}[]"':;,.<>?/|\\";
if(!myString.matches(".*[" + Pattern.quote(forbiddenCharacters) + "].*")) ...

几点说明:

  1. 您需要转义反斜杠才能将其转换为forbiddenCharacters字符串。
  2. Pattern类的静态quote()方法允许您转义字符串,以便它由正则表达式引擎解析,就好像它是该字符串的文字版本一样。也就是说,它可以防止特殊的正则表达式字符被处理。