图案名称特殊字符

时间:2016-09-02 07:26:26

标签: java regex

我正试图找到一个说:

的模式

只有数字a-z A-Z 0-9。 + - %

错了,是我的代码:

String regex = "[^a-zA-Z0-9_\\.+-\\%]";

我得到例外 指数17附近的非法字符范围 在17指数我有%,我做错了什么?

2 个答案:

答案 0 :(得分:4)

您不需要在正则表达式中转义%。删除之前的\

你也不应该逃避.。在字符类中没有必要这样做:在字符类中,它表示文字.字符,而不是"任何字符"。

但你需要逃避-,你的意思是文字-,而不是字符范围。

String regex = "[^a-zA-Z0-9_.+\\-%]";

答案 1 :(得分:1)

  

我得到异常非法字符范围

这是因为在字符类中间存在未转义的连字符作为范围。你可以在字符类的第一个或最后一个位置放置未转义的连字符,否则你需要将其转义。

您可以使用此正则表达式:

String regex = "[^a-zA-Z0-9_.+%-]";

或:

String regex = "[^\\w.+%-]";

无需在角色类中转义DOT或%