【发布时间】:2014-11-06 04:14:07
【问题描述】:
我想要检查有效lat/long for india only的正则表达式。经度范围是70-98,小数点后一位,纬度范围是8-36,小数点后一位
我已经在 android 中实现了这个。我编写的这段代码分别针对纬度和沿途的 -90 到 90 和 -180 到 180 的范围,它正在工作,但现在我的经度和经度范围已更改。
对于小数点,它应该允许 8.0 到 36.0。
public class Manual_LatLong extends Activity
{
private EditText LAT1;
private EditText LONGITUDE1;
private static final String TAG_LAT = "LAT";
private static final String TAG_LONG = "LONGITUDE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manual__lat_long);
LAT1 = (EditText) findViewById(R.id.editText1);
LONGITUDE1 = (EditText) findViewById(R.id.editText2);
findViewById(R.id.show).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String LAT = LAT1.getText().toString();
if (!isValidLAT(LAT)) {
LAT1.setError("Invalid Latitude");
LAT1.requestFocus(LAT.length());
}
else{
String LONGITUDE = LONGITUDE1.getText().toString();
if (!isValidLONG(LONGITUDE)) {
LONGITUDE1.setError("Invalid LONGITUDE");
LONGITUDE1.requestFocus(LONGITUDE.length());
}
else{
Intent in = new Intent(getApplicationContext(), LocationActivity.class);
// Sending lat/long to next activity
in.putExtra(TAG_LAT, LAT);
in.putExtra(TAG_LONG, LONGITUDE);
startActivityForResult(in, 100);
}
}
}
});
}
private boolean isValidLAT(String LAT) {
String LAT_PATTERN = "(-?[0-8]?[0-9](\\.\\d*)?)|-?90(\\.[0]*)?";
Pattern pattern = Pattern.compile(LAT_PATTERN);
Matcher matcher = pattern.matcher(LAT);
return matcher.matches();
}
private boolean isValidLONG(String LONGITUDE) {
String LONG_PATTERN = "(-?([1]?[0-7][1-9]|[1-9]?[0-9])?(\\.\\d*)?)|-?180(\\.[0]*)?";
Pattern pattern = Pattern.compile(LONG_PATTERN);
Matcher matcher = pattern.matcher(LONGITUDE);
return matcher.matches();
}
}
【问题讨论】:
-
对于纬度我试过这个:PATTERN = "(?[7-9]?[0-8](\\.\\d*)?)" 但它显示我语法错误.
-
你是如何使用这个变量的,用什么语言,错误信息是什么?请更新您的问题。
-
如果这是 shell 脚本,等号周围不能有空格,而且许多标准正则表达式工具(
grep等)不支持像\d这样的 Perl 扩展。 -
(那不妨修正题名中“纬度”的拼写。)
-
“小数点后一位”是指最后一个范围以 36.0 结尾吗?所以 35.9 可以,但 36.1 不行吗?还是您的意思是到 36.9 为止?
标签: java android regex range decimal