正则表达式验证纬度和经度
Regex Validating Lat & long
我是 reg ex 的新手,我的任务是尝试更新我们的 regex 验证器。目前,他们检查纬度和经度是否真实,但现在我们需要确保它们在某个框内。
由于用户可以手动输入它或从地图中 select 它,因此我们需要考虑不同的样式(minutes/degrees 以及十进制)。
所需的验证--
LAT 50 through 72 & LONG: -130 through -180 OR 172 through 180)
当前正则表达式--
LAT:
"^(-?((90((\.0{1,15})|(\:00\:00))?)|(([0-8]?\d)((\.\d{1,15})|((\:[0-5]\d){2}))?)))$"
LONG: "^(-?((180((\.0{1,15})|(\:00\:00))?)|(((\d{1,2})|(1[0-7]\d))((\.\d{1,15})|((\:[0-5]\d){2}))?)))$"
我确实尝试 google 它并且正在玩这个
^[+]?([1-8]?\d(\.\d+)?|50(\.0+)?),\s*[+]?(72(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$
但我在阅读它时遇到了问题,所以我不知道如何更新它:
Typical inputs: Latitude could be either 52.5 OR 52:30:00
如果必须使用正则表达式(如 ),我可能会为 "lat" 使用类似的东西,范围从 50
到 72
:
^(?:(?:[56]\d|7[01])(?:\.\d{1,15}|(?::(?:[0-5]\d|\d)){1,2})?|72(?:\.0{1,15}|(?::00){1,2})?)$
注意我在这里假设你的例子 52:30:00
意味着冒号后的两个数字组件必须在 0
到 59
范围内。
我会把 "long" 输入检查留给你...但我要强调你的尝试有一些问题:
^[+]?([1-8]?\d(\.\d+)?|50(\.0+)?),\s*[+]?(72(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$
- 它包含
+
符号 - 这在您的示例输入中没有提到
- 它包括
,
和 white-space \s*
检测 - 为什么会在这里 - 同样,您的示例输入不允许用户输入逗号或白色 space.
专注于一次为一个范围编写正则表达式,先 -130 through -180
然后 172 through 180
,然后将两个单独的正则表达式与 |
.
组合
您也没有提到您的正则表达式适用于哪种语言 - 我假设 JavaScript - 但如果不是这种情况你应该小心 - 并且在以后的问题中更清楚。
希望这对您有所帮助。
我是 reg ex 的新手,我的任务是尝试更新我们的 regex 验证器。目前,他们检查纬度和经度是否真实,但现在我们需要确保它们在某个框内。 由于用户可以手动输入它或从地图中 select 它,因此我们需要考虑不同的样式(minutes/degrees 以及十进制)。
所需的验证--
LAT 50 through 72 & LONG: -130 through -180 OR 172 through 180)
当前正则表达式--
LAT:
"^(-?((90((\.0{1,15})|(\:00\:00))?)|(([0-8]?\d)((\.\d{1,15})|((\:[0-5]\d){2}))?)))$"
LONG: "^(-?((180((\.0{1,15})|(\:00\:00))?)|(((\d{1,2})|(1[0-7]\d))((\.\d{1,15})|((\:[0-5]\d){2}))?)))$"
我确实尝试 google 它并且正在玩这个
^[+]?([1-8]?\d(\.\d+)?|50(\.0+)?),\s*[+]?(72(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$
但我在阅读它时遇到了问题,所以我不知道如何更新它:
Typical inputs: Latitude could be either 52.5 OR 52:30:00
如果必须使用正则表达式(如 50
到 72
:
^(?:(?:[56]\d|7[01])(?:\.\d{1,15}|(?::(?:[0-5]\d|\d)){1,2})?|72(?:\.0{1,15}|(?::00){1,2})?)$
注意我在这里假设你的例子 52:30:00
意味着冒号后的两个数字组件必须在 0
到 59
范围内。
我会把 "long" 输入检查留给你...但我要强调你的尝试有一些问题:
^[+]?([1-8]?\d(\.\d+)?|50(\.0+)?),\s*[+]?(72(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$
- 它包含
+
符号 - 这在您的示例输入中没有提到 - 它包括
,
和 white-space\s*
检测 - 为什么会在这里 - 同样,您的示例输入不允许用户输入逗号或白色 space.
专注于一次为一个范围编写正则表达式,先 -130 through -180
然后 172 through 180
,然后将两个单独的正则表达式与 |
.
您也没有提到您的正则表达式适用于哪种语言 - 我假设 JavaScript - 但如果不是这种情况你应该小心 - 并且在以后的问题中更清楚。
希望这对您有所帮助。