【问题标题】:Android regex not acting as I thought it wouldAndroid 正则表达式没有像我想象的那样行事
【发布时间】:2012-03-24 23:05:49
【问题描述】:

我目前正在尝试创建代码来检查内容是否为数字。我发现这个可以处理正则表达式代码的简洁匹配命令,但我是一个初学者,所以如果你能解释我做错了什么,那就太棒了。

我试图将 E 作为指数,并且它可以输入 .10.1。显然,我不希望可以输入多个标点符号和一个 E。

这是我的代码:

if (blabla.getText().toString().matches("((-|\\+)?([0-9]|[0-9].|.[0-9])+([0-9]+E)?([0-9]+)?)+")) {

目前,此代码允许您只输入 E2 之类的内容,尽管对我来说它看起来不应该返回 true,因为 ([0-9]|[0-9].|.[ 0-9])+ 在前面。

【问题讨论】:

  • 您看到了什么出乎意料的结果?
  • 我期望 E2 与表​​达式的内容不匹配

标签: java android regex numeric


【解决方案1】:

你必须避开句号:

if (blabla.getText().toString().matches("((-|\\+)?([0-9]|[0-9]\.|\.[0-9])+([0-9]+E)?([0-9]+)?)+");

如果不转义,句点表示“除换行符以外的任何字符”。

【讨论】:

  • 非常感谢!这就是问题
  • @user1254588 因此接受这个答案(左边的绿色符号)
猜你喜欢
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多