Java中的正则表达式将特定的特殊字符与数字匹配

时间:2018-06-29 09:09:09

标签: java regex

我想有一个正则表达式,可以接受数字以及特定的特殊字符(users = contest.participants.annotate( cost_sum=Coalesce( Sum( Subquery( ContestTaskRelationship.objects.filter( contest=contest, solved=OuterRef('id') ).values('cost').all() ) ), V(0), output_field=IntegerField() ) ) )。我刚刚了解了正则表达式的基础知识,但我不知道我的模式为什么不起作用,真的需要建议。

我的模式

ContestTaskRelationship

.-,)只能重复一次,即 ^(([0-9]*)+[.,\-]{0,1})$ 。另外first应该是数字,last也应该是数字。我真的需要一点推动力。

预期产量

.,-

2 个答案:

答案 0 :(得分:3)

您可以使用简单模式^(?:\d+[.,-])*\d+$

  • 几位数:\d+
  • 来自.,-的一个字符:[.,-]
  • 您可以重复前面的2个元素:(?:\d[.,-])*()?:未捕获性能)
  • 末尾
  • 个数字:\d+
String[] array = {"122-555-1521", "155--122", "155,-", ".-12", "123.123."};
String pattern = "^(?:\\d+[.,-])*\\d+$";
for(String str : array){
    System.out.println(str+" "+str.matches(pattern));
}

122-555-1521 true
155--122     false
155,-        false
.-12         false
123.123.     false

Working Demo-Regex Demo

答案 1 :(得分:1)

如果我的理解正确,您想匹配一组数字,用[。,-]中的单个非数字字符分隔吗?

[0-9] +([。,\-] [0-9] +)*