Регулярное выражение для формата XXXXXXX_YZZZZ

Я пытаюсь написать регулярное выражение в java, которое будет проверять следующий формат:

XXXXXXXX_YZZZZ

где

X – alphanumeric characters(8 characters)
Y - alpha character
Z - numeric characters

то, что я пробовал для первой части, - ^ [a-zA-Z0-9] * $ , но я не понимаю, как перейти на вторую часть.

Может ли кто-нибудь сказать мне, что будет правильным регулярным выражением для требуемого формата?

1

8 ответы

Вы забыли указать количество и подчеркивание, которое я предполагаю ...

/^[a-z0-9]{8}_[a-z][0-9]{4}$/i
5
добавлено
Да, извините. :) Они сейчас
добавлено автор Florian Peschka, источник
@nhahtdh, то какое это регулярное выражение?
добавлено автор Vivek, источник
это не работает для меня для этого ввода - isa12345_a1234
добавлено автор Vivek, источник
@Vivek: если вы удалите разделители / и установите флаг i с помощью Pattern.CASE_INSENSITIVE или вставьте (? I) перед строка, то это станет регулярным выражением Java. Содержимое одного и того же, но представление отличается.
добавлено автор nhahtdh, источник
Это не регулярное выражение Java.
добавлено автор nhahtdh, источник
Что делает ^ и $ ?
добавлено автор Ash Burlaczenko, источник
Не забывайте ^ $
добавлено автор John Dvorak, источник
Ash Burlaczenko, ^ указывает, что начинается с и $ указывает, заканчивается ли с
добавлено автор Avinash Nair, источник

Посмотрите JavaDoc , затем вы можете перевести свои требования на:

"^\\p{Alnum}{8}_\\p{Alpha}\\p{Digit}{4}$"

Он использует предопределенные классы символов, как вы указали в своем вопросе.

4
добавлено
Спасибо за это..
добавлено автор Vivek, источник

Попробуйте это регулярное выражение:

^[A-Za-z\d]{8}_[A-Za-z]\d{4}$

Ваше регулярное выражение соответствует нулевому или нескольким буквенно-цифровым символам и/или пробелам.

This is a good place to learn regex : http://www.regular-expressions.info

2
добавлено

Как насчет этого?

^[a-ZA-Z0-9]{8}\_[a-zA-Z][0-9]{4}$

Вы также можете сгруппировать результаты:

^([a-ZA-Z0-9]{8})\_([a-zA-Z])([0-9]{4})$

так что вы можете обращаться к частям X, Y и Z отдельно от результатов.

2
добавлено
Но лучше избегать нежелательных побегов.
добавлено автор Naveed S, источник
Какая потребность в экранировании _ ?
добавлено автор Naveed S, источник
Это действительно не нужно, нет, но мне нравится избегать литералов, потому что это делает регулярное выражение более ясным (по крайней мере для меня).
добавлено автор Roy Dictus, источник
@NaveedS не нужно
добавлено автор John Dvorak, источник

Попробуйте это регулярное выражение

^[a-zA-Z0-9]{8}[_][a-zA-Z][0-9]{4}$
1
добавлено

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

    "8abba778_a2012".matches("^\\w{8}_[a-z]\\d{4}$"); 

[EDIT]: По словам Джона Дворжака, я исправляю свой ответ. На самом деле \ w слишком великодушна и также относится к символу подчеркивания _. Правильный ответ :

     "8abba778_a2012".matches("^[a-zA-Z0-9]{8}_[a-z]\\d{4}$"); 
0
добавлено
Ну, \ w, \ d, \ s называются метасимволами вообще. Или я должен сказать предопределенные классы символов в терминах Java.
добавлено автор Dimitri, источник
Хорошо, я исправлю свой ответ
добавлено автор Dimitri, источник
По словам Джавадока, docs.oracle.com /javase/7/docs/api/java/util/regex/Pattern.ht‌ ml , \ w эквивалентно [a-zA-Z_0-9]. Я не понимаю, почему?
добавлено автор Dimitri, источник
\\ w слишком щедр
добавлено автор John Dvorak, источник
\\ w слишком велико, потому что он переносит символ подчеркивания.
добавлено автор John Dvorak, источник
Все еще не уверен, что вы подразумеваете под «метасимволами»,
добавлено автор John Dvorak, источник

Пытаться:

^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$

Regexper is your friend here.

0
добавлено
^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$
0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async