使用DiskLruCache时的正则表达式错误(Jake Wharton)

时间:2015-11-30 08:02:31

标签: java android regex

我收到此错误  java.lang.IllegalArgumentException: keys must match regex [a-z0-9_-]{1,64}: "mision_imposible_–_rogue_nation"

任何人都可以看到错误的原因导致我无法弄清楚该电影标题的错误以及为什么它不符合正则表达式格式

2 个答案:

答案 0 :(得分:0)

更新

我们可以根据DiskLruCache的请求更好地整形输入字符串:

  • 最大长度:64个字符
  • 允许使用字符类:[a-z0-9_-]

因此,假设输入字符串input不为空,则下面的代码可以解决这个问题:

final String MAX_LENGTH = 64;
//First check is used to avoid exception
(input.length() > MAX_LENGTH ? input.substring(0,MAX_LENGTH) : input)
 .toLowerCase()                 // All alphabetic ascii to lowercase
 .replaceAll("[^a-z0-9_-]","_") // Replace not permitted char with "_"

答案 1 :(得分:0)

我还没有直接在Java正则表达式中尝试过这个,但是在这个正则表达式编辑器中,你的连字符所需要的只是反斜杠。

这里有选项,首先是短划线,最后是连字符。否则,省略第一个只接受连字符。 [a-z0-9_\–]{1,64}

http://regexr.com/3cahm看看是否有效。