我需要验证纬度和经度输入字符串的格式,而不是纬度或经度的正确值。
格式纬度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(没有区分大小写)。
答案 0 :(得分:1)
您已强制要求N
和S
。
"^(?: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:75E
或99: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;