用于角度尺寸可视化的正则表达式

时间:2013-11-09 14:17:39

标签: .net regex

我想为可以编辑角度值的控件实现验证器。

格式为DDD°MM'SS,xxx

我想接受的值位于[0°00'00'' - 359°59'59'']区间内。

第二部分应编辑为浮点数。

3 个答案:

答案 0 :(得分:1)

如果 在单个正则表达式中执行此操作:

^(3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])°[0-5][0-9]'[0-5][0-9](,[0-9]+)?''$

<强>说明:

^              # Start of string
(              # Start of group:
 3[0-5][0-9]   # Match either a number between 300 and 359
|              # or
 [12][0-9]{2}  # a number between 100 and 299
|              # or
 [1-9]?[0-9]   # a number between 0 and 99 (no trailing zeroes allowed!)
)              # End of group
°              # Match °
[0-5][0-9]     # Match a number between 00 and 59 (trailing zero required!)
'              # Match '
[0-5][0-9]     # Match a number between 00 and 59 (trailing zero required!)
(,[0-9]+)?     # Match optional decimal part
''             # Match ''
$              # End of string

答案 1 :(得分:1)

如果DDD部分不允许前导零,SS的可选小数部分长度为1-3位,逗号为小数分隔符,则应使用正则表达式

^([1-2]\d|3[0-5]|[1-9])?\d\xB0([0-5])?\d\x27([0-5])?\d(?:,\d{1,3})?(\x27{2}|\x22)?$

如果DDD部分允许前导零,则使用模式

^([0-2]\d|3[0-5]|\d)?\d\xB0([0-5])?\d\x27([0-5])?\d(?:,\d{1,3})?(\x27{2}|\x22)?$

此外,如果MMSS部分必须使用前导零,则使用模式

^([0-2]\d|3[0-5]|\d)?\d\xB0([0-5])\d\x27([0-5])\d(?:,\d{1,3})?(\x27{2}|\x22)?$

以上所有模式都允许SS部分中的数字跟随''"符号,并且完全没有符号。

答案 2 :(得分:0)

如果您在.NET中执行此操作,根据您的标记,我不会在Regex中完成所有操作。我通过正则表达式检索相关部分,将它们转换为整数,并验证它们是否在范围内作为第二步。

这会为你的正则表达式留下(\d{1,3})°(\d{2})'(\d{2})''之类的东西,我相信你可以自己计算其余的.NET代码。