![]() |
1
2
首先,正则表达式中的字符默认匹配一次,因此1是多余的。 其次,由于您可以很明显地隔离这个值(您只提示输入这个值,而不必在输入数据的段落中查找它),所以您应该在字符串中包含^和$以强制字符串只包含这个模式。 试试“^\d 1,3-\d 1,2(-\d 1,2)”?$”。 分解:^匹配字符串的开头。\ d匹配任何一个十进制字符,然后在后面指定1,3,它将匹配一组1到3次出现的任何数字。然后你要找的是一个破折号,然后是一个类似的十进制模式,但只有一到两次。最后一个术语用括号括起来,这样我们可以对字符进行分组。它的形式和前两个相似,然后有一个?它将前面的字符组标记为可选。末尾的$表示输入应该结束。鉴于此,它将匹配222-33-44或222-33,但不匹配222-3344或222-33-ABC。 请记住,您可能还需要加入其他规则。例如,秒可以表示为十进制(如果您希望分辨率小于1秒)。您需要有选择地期望小数点和一个或多个附加数字。另外,您可能有一个最大度值;上面的regex将匹配DMS值359-59-59的最大整数,但是它也将匹配999-99-99,这是无效的。您可以使用regex限制最大值(例如“(3[0-5]\d[1-2]\d 2 \d 1,2)”,通过匹配3、0-5、0-9或以1或2或任何两位数字开头的任何3位数字,或任何两位数字),但如示例所示,regex将变得冗长而混乱,因此doc在代码中很好地说明你在做什么。 |
![]() |
2
4
您可以使用
你也可以缩短
|
![]() |
3
1
也许您最好只分析输入输出,并单独检查。 |
![]() |
4
0
我不确定我是否理解正确,但我想
可能有用。 但这是非常含糊的;我也在想为什么你只允许一位数的度/分/秒的值。请给出一些你想做和不想做匹配的例子。 |
![]() |
5
0
也许您应该尝试这样的方法并测试空组/无效组:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |