Регулярное выражение в Java, соответствующее определенным специальным символам с номером - PullRequest
0 голосов
/ 29 июня 2018

Я хотел бы иметь регулярное выражение, которое принимает числовые, а также специальные специальные символы (.-,). Я только что узнал об основах регулярных выражений и не знаю, почему мой шаблон не работает, очень нужен совет.

Мой рисунок

   ^(([0-9]*)+[.,\-]{0,1})$

(.,-) можно повторить только один раз, это {0,1}. Также first должен быть числовым, а last также числовым. Мне действительно нужно немного подтолкнуть.

Ожидаемый результат

122-555-1521 //true

155--122 //false

155,- //false

.-12 //false

123.123. //false

.12 //false

1.2,1-3 //true

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Если я правильно понимаю, вы хотите сопоставить группы цифр, разделенных одиночными нецифровыми символами из набора [., -]?

([. \ -] [0-9] +)

[0-9] + *

0 голосов
/ 29 июня 2018

Вы можете использовать простой шаблон ^(?:\d+[.,-])*\d+$

  • несколько цифр: \d+
  • один символ из .,-: [.,-]
  • Вы можете повторить 2 предыдущих элемента: (?:\d[.,-])* () ?: non-capture for performance)
  • цифры в конце: \d+
String[] array = {"122-555-1521", "155--122", "155,-", ".-12", "123.123."};
String pattern = "^(?:\\d+[.,-])*\\d+$";
for(String str : array){
    System.out.println(str+" "+str.matches(pattern));
}

122-555-1521 true
155--122     false
155,-        false
.-12         false
123.123.     false

Рабочая демоверсия - Regex Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...