1

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

类型安全参数应该包含a作为第一个字母 Then 除零以外的任何数字。

我在 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 的数字 Say a1a2。不幸a0的是,它也受支持。我想避免0

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

4

1 回答 1

4

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

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

或者只指定您想要允许的数字:

a[1-9]?
type versionRegex = MatchesRegex[W.`"""a[1-9]?"""`.T]
于 2019-01-10T09:48:53.263 回答