正则表达式验证纬度和经度的输入格式

时间:2011-09-12 20:27:44

标签: javascript asp.net regex

我需要验证纬度和经度输入字符串的格式,而不是纬度或经度的正确值。

格式纬度89:90:00N或67:90:76 S和经度67:23:00E或78:23:45W

我正在使用下面的表达式,我得到了一个错误的

 if (!Regex.IsMatch(currentValue, "^[0-9][0-9]:[0-9][0-9]:[0-9][0-9][N][S]$"))

                                Errors.Text = "Invalid format of Latitude;

请纠正我在哪里出错。我需要验证它是N还是S(没有区分大小写)。

3 个答案:

答案 0 :(得分:1)

您已强制要求NS

"^(?:90|[0-8][0-9]):[0-5][0-9]:[0-5][0-9][NS]$"    // latitude
"^(?:180|1[0-7][0-9]|[0-9][0-9]):[0-5][0-9]:[0-5][0-9][EW]$"  // longitude

应该有效。这也会拒绝190:67:75E99:99:99S等无效条目。

答案 1 :(得分:1)

/^([0-9]{1,2}:[0-9]{2}:[0-9]{2}\s?[NS]|[0-9]{1,3}:[0-9]{2}:[0-9]{2}\s?[EW])$/i

应该有效

感谢Tim Pietzcker的^$。我忘了把它放在我的第一个:P

答案 2 :(得分:0)

N / S部分有错误。同样,你可以使它更具可读性:

if (!Regex.IsMatch(currentValue, "^\d{2}:\d{2}:\d{2}[SN]$"))

                            Errors.Text = "Invalid format of Latitude;