包括所有特殊字符的正则表达式模式

新手上路,请多包涵

我想编写一个简单的正则表达式来检查给定字符串中是否存在任何特殊字符。我的正则表达式有效,但我不知道为什么它还包含所有数字,所以当我输入一些数字时,它会返回错误。

我的代码:

 //pattern to find if there is any special character in string
Pattern regex = Pattern.compile("[$&+,:;=?@#|'<>.-^*()%!]");
//matcher to find if there is any special character in string
Matcher matcher = regex.matcher(searchQuery.getSearchFor());

if(matcher.find())
{
    errors.rejectValue("searchFor", "wrong_pattern.SearchQuery.searchForSpecialCharacters","Special characters are not allowed!");
}

原文由 Piotr Sagalara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
2 个回答

请不要那样做……小 Unicode BABY ANGEL 像这样的 👼 快死了! ◕◡◕(←这些不是图片)(箭头也不是!)

而且您正在杀死 20 年的 DOS :-) (最后一个笑脸被称为 WHITE SMILING FACE …现在它在 263A …但在古代它是 ALT-1 )

和他的朋友

BLACK SMILING FACE …现在在 263B …但在古代是 ALT-2

尝试否定匹配:

 Pattern regex = Pattern.compile("[^A-Za-z0-9]");

(这只可以 A-Z “标准”字母和“标准” 0-9 数字。)

原文由 xanatos 发布,翻译遵循 CC BY-SA 4.0 许可协议

字符类中间有一个破折号,表示一个字符范围。像这样将破折号放在课程的末尾:

 [$&+,:;=?@#|'<>.^*()%!-]

原文由 Jerry 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题