Проверка, начинается ли строка или заканчивается указанным символом, с помощью регулярного выражения - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно проверить входную строку так, чтобы ей было разрешено иметь символы 'E', 'W', 'N', 'S' (или их строчные буквы) только в начале или в конце Строка (не оба). Символ будет сопровождаться цифрами. Символ не может быть между цифрами. Кроме того, если оно присутствует в начале, то оно не может быть в конце (и наоборот).

Мне удалось придумать это регулярное выражение: [wWeEnNsS]{0,1}\\d+, которое проверяет только символы в начале. Но как мне убедиться, что если он присутствует в начале, то не может быть в конце?

Ниже приведены примеры допустимых входных данных:

w234,
W234,
E234,
234w,
234

Неверные данные:

w234w,
2w34,
ww234,
we234,
w234e,
w

1 Ответ

3 голосов
/ 19 июня 2019

Вы можете использовать чередование, используя регистр без учета регистра:

^[ewns][0-9]+$|^\d+[ewns]?$

В Java

String regex = "^(?:[ewns]?[0-9]+|\\d+[ewns])$";
  • ^[ewns][0-9]+$ Начало строки, соответствует 1 из перечисленных символов и конец строки
  • | или
  • ^\d+[ewns]?$ Начало строки, при желании соответствует 1 из перечисленных символов и конец строки

Regex demo | Java демо

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