groovy域类属性的正则表达式

时间:2011-08-04 12:57:13

标签: regex grails groovy

我有一个string类型的属性。它可以接受所有数字和字母数字值。 我需要一个表达式,必须在字符串的末尾包含“ - [0-9]” 像A-a-A2-AXY-1和以下格式

XX-XXX-X**-11** any string and at last **-number**

1 个答案:

答案 0 :(得分:3)

如果我理解你,你需要的模式是:

/[0-9A-Za-z]+(-[0-9A-Za-z]+)*-[0-9]/

我写了一个快速测试:

valid = [ 'A-a-A2-AXY-1', 'A-a-A2-A2Y-11', '14-a-A2-A2Y-11' ]
invalid = [ '-a-A2-AXY-A', 'A-a-A2-AXY-', 'A-a-A2-AXY-B' ]

pattern = /[0-9A-Za-z]+(-[0-9A-Za-z]+)*-[0-9]+/

valid.each { println "$it ${it ==~ pattern}" }
invalid.each { println "$it ${it ==~ pattern}" }

输出:

A-a-A2-AXY-1 true
A-a-A2-A2Y-11 true
14-a-A2-A2Y-11 true
-a-A2-AXY-A false
A-a-A2-AXY- false
A-a-A2-AXY-B false

似乎工作

使用通配符可能会缩短模式