gpt4 book ai didi

c# - 匹配 [0-9]-[0-9]-[0-9] 的模式,但不匹配 [0-9]-[0-9]

转载 作者:行者123 更新时间:2023-11-30 14:18:52 25 4
gpt4 key购买 nike

我不确定如何使用正则表达式来完成此操作(或者如果可以的话;我是正则表达式的新手)。我有一个用户将输入的角度值,我正在尝试验证该条目。它的形式是度-分-秒。我遇到的问题是,如果用户输入错误的秒部分,我必须捕获该错误,但我的度-分匹配是成功的。

也许该方法会更好地解释:

    private Boolean isTextValid(String _angleValue) {

Regex _degreeMatchPattern = new Regex("0*[1-9]");
Regex degreeMinMatchPattern = new Regex("(0*[0-9]-{1}0*[0-9]){1}");
Regex degreeMinSecMatchPattern = new Regex("0*[0-9]-{1}0*[0-9]-{1}0*[0-9]");

Match _degreeMatch, _degreeMinMatch, _degreeMinSecMatch;

_degreeMinSecMatch = degreeMinSecMatchPattern.Match(_angleValue);
if (_degreeMinSecMatch.Success)
return true;

_degreeMinMatch = degreeMinMatchPattern.Match(_angleValue);
if (_degreeMinMatch.Success)
return true;

_degreeMatch = _degreeMatchPattern.Match(_angleValue);
if (_degreeMatch.Success)
return true;

return false;
}
}

如果度-分-秒匹配不成功,我想检查度-分,但前提是用户没有输入任何秒数据。我可以通过正则表达式执行此操作,还是需要解析字符串并分别评估每个部分?谢谢。

编辑:样本数据将是 45-23-10 作为正确数据。问题是 45-23 也是有效数据; 0 秒是可以理解的。因此,如果用户意外键入 45-23-1=,我代码中的 degreeMinMatchPattern 正则表达式将成功匹配,即使它是无效的。

第二个编辑:为了清楚起见,分钟和第二部分都是可选的。用户可以输入 45,这是有效的。

最佳答案

您可以使用 {m,} 语法指定“这部分模式必须至少匹配 3 次”。由于每个组件之间有连字符,所以单独指定第一部分,然后每个连字符数字组合可以组合在一起:

`[0-9](-[0-9]){2,}`

您还可以将[0-9]缩短为\d:\d(-\d){2,}

关于c# - 匹配 [0-9]-[0-9]-[0-9] 的模式,但不匹配 [0-9]-[0-9],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com