Java 图案名称特殊字符

Java 图案名称特殊字符,java,regex,Java,Regex,我试图得到一个模式,它说: 仅数字a-z a-z 0-9.+-% 你错了,这是我的代码: String regex = "[^a-zA-Z0-9_\\.+-\\%]"; 我有个例外 索引17附近的非法字符范围 在17索引中,我有%,我做错了什么?不需要在正则表达式中转义%。删除之前的\项 你也不应该逃避。。在character类中不需要这样做:在character类中,它意味着文本。角色,而不是任何角色 但是您确实需要转义-,这里您指的是文字-,而不是字符范围 String regex = "

我试图得到一个模式,它说:

仅数字a-z a-z 0-9.+-%

你错了,这是我的代码:

String regex = "[^a-zA-Z0-9_\\.+-\\%]";
我有个例外 索引17附近的非法字符范围 在17索引中,我有%,我做错了什么?

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

你也不应该逃避。。在character类中不需要这样做:在character类中,它意味着文本。角色,而不是任何角色

但是您确实需要转义-,这里您指的是文字-,而不是字符范围

String regex = "[^a-zA-Z0-9_.+\\-%]";
您不需要在正则表达式中转义%。删除之前的\项

你也不应该逃避。。在character类中不需要这样做:在character类中,它意味着文本。角色,而不是任何角色

但是您确实需要转义-,这里您指的是文字-,而不是字符范围

String regex = "[^a-zA-Z0-9_.+\\-%]";
我得到了非法字符范围的异常

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

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

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

字符类中不需要转义点或%

我得到了非法字符范围的异常

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

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

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


字符类中不需要转义点或%。

您确实需要转义-除非您是指符号+到%@pustypawel请注意,在我将其格式化为代码之前,上面代码中的双反斜杠并不明显-如果您发布代码,请缩进4或用反斜杠环绕。正则表达式是错误的,因为它包括uu,而您声明的要求不包括。那么,当你说a-z不是数字,0-9数字是有效的时,只有数字意味着什么?你确实需要转义-除非你是指符号+到%@pustypawel请注意,在我将其格式化为代码之前,上面代码中的双反斜杠并不明显-如果你发布代码,缩进4或用反勾号环绕。正则表达式是错误的,因为它包含u,而您声明的要求不包含。那么,当你说a-z不是数字,0-9数字是有效的时,只有数字意味着什么呢?根据anubhava的回答,我认为我不需要转义-字符,如果它在表达式的末尾?“我说得对吗?”pustypawel似乎是这样。不过,我建议不要这样做,以防您决定向character类添加更多字符-您可能会意外地将-变为一个范围。根据anubhava的回答,这可以缩短为[^\w\.\+\-\%],我认为如果字符位于表达式末尾,我不需要转义-字符?“我说得对吗?”pustypawel似乎是这样。不过,我建议您不要这样做,以防您决定向character类添加更多字符-您可能会意外地将-变成一个范围。这可以缩短为[^\w\.\+-\%]