0

我的要求是“值名称不允许使用以下字符:

 [ $ & + , / : ; =? @ " < > # % { } | \ ~ ^ [ ] ` ] '

我用过这样的东西,

Pattern pattern = Pattern.compile("[\"\\.&,@!?#%'$()/\\\\ \\-_<>]+$");
Matcher matcher = pattern.matcher(keyName);

其中 keyName 是一个字符串,我正在从中搜索存在特殊字符

任何人都可以为 Java Pattern-Matcher 提供正则表达式吗?先感谢您

4

2 回答 2

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);
于 2013-08-06T04:49:47.340 回答
1

只需列出字符类 ( [...]) 中的字符,必要时进行转义。因为这听起来像是一项学校作业,所以我不会用勺子喂给你。请注意,您可能需要对某些字符进行双重转义。(正则表达式需要\转义为\\,但要\\进入 Java 中的正则表达式,您需要使用"\\\\"。)

顺便说一句,您的列表中似乎有两个字符 ([])。

于 2013-08-06T04:26:56.010 回答