Ric*_*uez 6 php regex preg-match
我让用户通过表单输入GPS值,它们都具有相同的形式,例如:
49.082243,19.302628
48.234142,19.200423
49.002524,19.312578
Run Code Online (Sandbox Code Playgroud)
我想用PHP检查输入的值(使用preg_match(),我猜),但因为我在正则表达式中不好(哦,笨我,我应该最后学习它,我知道),我不知道怎么写表达方式.
显然,这应该是:
2个(数字),1个(点),6个(数字),1×(逗号),2个(数字),1个(点),6个(数字)
有关如何在正则表达式中写这个的任何建议吗?
Chr*_*son 13
我看到的其他答案没有考虑经度从-180到180,纬度从-90到90.
正确的正则表达式是(假设顺序是"纬度,经度"):
/^(-?[1-8]?\d(?:\.\d{1,6})?|90(?:\.0{1,6})?),(-?(?:1[0-7]|[1-9])?\d(?:\.\d{1,6})?|180(?:\.0{1,6})?)$/
Run Code Online (Sandbox Code Playgroud)
这个正则表达式包括纬度不小于-90且不大于90,经度不小于-180且不大于180,同时允许它们输入整数以及从1到1的任意小数位数6,如果你想允许更高的精度,只需将{1,6}更改为{1,x},其中x是小数位数
此外,如果您在组1上捕获,则获得纬度,组2上的捕获获得经度.
Mat*_*all 11
就像是:
/^(-?\d{1,2}\.\d{6}),(-?\d{1,2}\.\d{6})$/
Run Code Online (Sandbox Code Playgroud)
^ 在输入开始时锚定-? 允许但不要求负号\d{1,2} 需要1或2个十进制数字\. 需要一个小数点\d{6} 需要正好6个十进制数字, 匹配一个逗号$ 在输入结束时锚定我已经包括捕获括号以允许您提取单个坐标.如果您不需要,请随意省略它们.
全面有用的正则表达式引用:http://www.regular-expressions.info/reference.html