Как правильно сделать регулярное выражение, которое принимает все буквы и выбор символов? - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно регулярное выражение, которое принимает все буквы (строчные и прописные), цифры и эти символы / символы ('-', '_', '@', '.').Это не обязательно должно быть в форме адреса электронной почты.Символы могут быть расположены в любом месте слова.Он также не должен принимать пробелы, а длина слова должна быть 8 или более.

Это то, что я имею до сих пор.

^(?=\S{8})[a-zA-Z]\w*(?:\.\w+)*(?:@\w+\.\w{2,4})?$

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019
[a-zA-Z._@\d-]{8,}

должен сделать свое дело.С дополнительными границами, которые будут ^[a-zA-Z._@\d-]{8,}$.

^               Beginning of the line
[a-zA-Z._@\d-]  Group of the characters a-z, A-Z and ., -, _, @ as per your question as well as numbers (\d)
{8,}            8 to unlimited times
$               End of the word

Вы можете попробовать это на regex101.com здесь .

Еще более короткое решениебудет [\w.@-]{8,} с использованием \w в качестве ярлыка для [a-zA-Z0-9_]. regex101 Не правильно!Спасибо @ Wiktor Stribiżew за исправление;см. комментарии для более.

0 голосов
/ 19 февраля 2019

Вот еще одна форма для буквенно-цифрового символа:

^[[:alnum:]._@\-]{8,}$
0 голосов
/ 19 февраля 2019

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

^[a-zA-Z0-9_@.-]{8,}$

Подробности

  • ^ - начало строки
  • [a-zA-Z0-9_@.-]{8,} - 8 или более букв ASCII, цифр, ., _, @ или -
  • $ - конец строки.

См. regex demo .

Не упустите \w в Android, по умолчанию он соответствует всем буквам и цифрам Unicode (но не в Java).

В Android / Javaпри использовании с .matches() вы можете удалить якоря ^ и $, так как для этого метода требуется полное совпадение строк:

String regex = "[a-zA-Z0-9_@.-]{8,}";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...