正则表达式中Java减号和hypen的区别

时间:2018-12-27 09:43:54

标签: java regex intellij-idea character-encoding nsregularexpression

我正在使用正则表达式检查文件名。

文件名可以是

的格式
  

客户名称-公司名称

我正在使用此正则表达式:

private static final Pattern fileRegex = Pattern.compile("^[a-zA-Z0-9_\\-\\.\\s\\,\\[\\]()\\{\\}]+$");

但是,hypen号(减号)不起作用,它的作用就像破折号。 我不确定这可能是因为IntelliJ创意设置。 如何在此正则表达式中添加减号?

例如,此格式必须有效:

  

test-test1 − test2

在这里,第一个是简单的破折号,第二个是减号。

2 个答案:

答案 0 :(得分:0)

好吧,毕竟它们是不同的unicode符号

代码点不同:破折号45和减号8722

您必须将\-替换为[\-\ −]

答案 1 :(得分:0)

在您的字符集中添加减号(\u2212

private static final Pattern fileRegex = Pattern.compile("^[a-zA-Z0-9_\\-\\u2212\\.\\s\\,\\[\\]()\\{\\}]+$");