正则表达式匹配ASCII非字母数字字符

时间:2014-08-17 12:34:21

标签: java regex

我需要一个正则表达式来匹配ASCII非字母数字字符。正则表达式不应与非ASCII字符匹配。我使用以下内容:

   "[\\u0000-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007f]"

我可以简化这个正则表达式吗?

3 个答案:

答案 0 :(得分:6)

是的,您可以使用字符类交集。例如:

[\\p{ASCII}&&\\P{Alnum}]

这意味着:所有ascii字符和所有非字母数字字符之间的交集

答案 1 :(得分:2)

您可以在Java中使用此正则表达式

^(?=[^0-9a-zA-Z]+$)\p{ASCII}+$

或者其他:

^(?!\p{Alnum}+$)\p{ASCII}+$

答案 2 :(得分:2)

您可以使用集合交集:

"[\\p{ASCII}&&[^\\p{Alnum}]]"

阅读:Reference - What does this regex mean?