java - 模式名称特殊字符

标签 java regex

我正在尝试获得一个模式,上面写着:

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

错了,是我的代码:

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

我遇到异常 索引 17 附近的非法字符范围 在 17 指数我有 %,我做错了什么?

最佳答案

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

您也不应该转义 .。在字符类中没有必要这样做:在字符类中,它意味着文字 . 字符,而不是“任何字符”。

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

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

关于java - 模式名称特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286632/

相关文章:

java - Netty代理示例中ctx.write(Unpooled.EMPTY_BUFFER)的用途是什么

java - GoogleApiClient 空指针异常

java - 使用 Maven、Gauge-Java 框架在不同配置上运行并行测试

php - .htaccess 用查询字符串重写不同页面的 URL

javascript - 将字符串分解为文本/http 链接

java - 有什么方法可以强制类在 Java 中具有 public static final 字段?

java - Tapestry ,内循环区域

java - String.split() 后无法获取子字符串?

javascript - 数字格式化的正则表达式

javascript - 正则表达式 - 匹配除+之外的任何字符,空字符串也应该匹配