我的要求是'以下字符不允许使用值名称:
[ $ & + , / : ; =? @ " < > # % { } | \ ~ ^ [ ] ` ] '
我使用过这样的东西,
Pattern pattern = Pattern.compile("[\"\\.&,@!?#%'$()/\\\\ \\-_<>]+$");
Matcher matcher = pattern.matcher(keyName);
其中keyName是一个String,我从中搜索存在特殊字符
任何人都可以为Java Pattern-Matcher提供Regex吗? 提前谢谢
答案 0 :(得分:3)
而不是匹配许多特殊字符。只需检查单词是否包含任何非字母数字字符。像这样:
String term = "Hello-World";
Pattern p = Pattern.Compile(".*\\W+.*");
Matcher m = p.Matcher(term);
或者您也可以使用:
String term = "Hello-World";
Pattern p = Pattern.Compile("[^A-Za-z0-9]");
Matcher m = p.Matcher(term);
答案 1 :(得分:1)
只需列出字符类([...]
)内的字符,并根据需要进行转义。由于这听起来像是一项学校作业,我不打算用勺子喂它。请注意,您可能需要双重转义某些字符。 (正则表达式要求\
转义为\\
,但要将\\
转换为Java中的正则表达式,则需要使用"\\\\"
。)
顺便说一下,您的列表中似乎有两个字符([
和]
)两次。