Android regex не действует так, как я думал - PullRequest
1 голос
/ 07 марта 2012

В настоящее время я пытаюсь создать код, чтобы проверить, является ли содержимое числовым.Я нашел эту аккуратную команду соответствия, которая может обрабатывать код Regex, но я новичок, поэтому было бы здорово, если бы вы могли объяснить, что я делаю неправильно.

Я пытаюсь привлечь E в качестве показателя степени итакже, что он работает для ввода .1, а также 0.1.Очевидно, я не хочу, чтобы можно было вводить более одного знака препинания и одного E.

Это мой код:

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

На данный момент этот код позволяет вампросто ввести что-то вроде E2, хотя для меня это выглядит так, как будто оно не должно возвращать это истину из-за ([0-9] | [0-9]. |. [0-9]) + перед этим.

1 Ответ

2 голосов
/ 07 марта 2012

Вы должны избежать периодов:

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

Если он не экранирован, точка означает «любой символ, кроме новой строки».

...