【发布时间】:2013-08-19 19:40:08
【问题描述】:
我需要使用 RegEx 验证一个十六进制值,例如:24° 12' 55,4" 或 32° 24' 15,4"。
现在,我有下一个正则表达式,它成功匹配度数和分钟数:
^([0-8][0-9]|[9][0])°\s([0-4][0-9]|[5][9])'$
但是,当添加秒验证器时会出现问题:
^([0-8][0-9]|[9][0])°\s([0-4][0-9]|[5][9])'\s([0-4][0-9]|[5][9],[0-9])''$
我是 RegEx 的新手,有什么想法吗?
【问题讨论】:
-
你能用被错误接受或拒绝的具体值指定“问题”吗?当然,您可以简单地将它们从测试中复制出来? ;)
-
^([0-8][0-9]|[9][0])°\s([0-4][0-9]|[5][9])'\s((?:[0-4][0-9]|[5][9]),[0-9])''$也许吧。但我不知道你的引擎。您使用哪种语言? -
您确定
"与''相同吗? -
用正则表达式进行这种值验证只会给你一个更复杂的正则表达式和更令人困惑的错误消息。我强烈建议您只使用 \d+ 作为数字部分,并处理它们超出代码范围。例如,您真的不希望分钟和秒的值在 50 到 58 之间(您允许 00-49 然后是 59),还是只是盲目地从验证 00-89 或 90 的度数的方式中复制?
标签: regex