如何在Scala中为值1-9的字符串编写精炼类型的正则表达式

时间:2019-01-10 09:41:02

标签: regex scala refined

我有一个字符串文字,该文字将被发送到方法。该方法具有带字符串的类型安全参数。

类型安全参数应该包含a作为首字母 然后是除零以外的任何数字。

我已经在Scala中用精细类型编写了一个匹配器

import eu.timepit.refined.string.MatchesRegex
import eu.timepit.refined._



type versionRegex = MatchesRegex[W.`"""a\\d?"""`.T]
type version = String Refined versionRegex

此问题是它接受1到9之间的数字 说 a1a2等。不幸的是,也支持a0。我想避免0

有没有办法增强正则表达式?

1 个答案:

答案 0 :(得分:3)

您可以明确排除0(如果要排除不在范围开头或结尾的数字,这特别有用)

a(?!0)\d?
type versionRegex = MatchesRegex[W.`"""a(?!0)\\d?"""`.T]

或仅指定要允许的数字:

a[1-9]?
type versionRegex = MatchesRegex[W.`"""a[1-9]?"""`.T]