Попробуйте вместо этого:
^([a-zA-Z0-9_-]+)\.([a-zA-Z0-9]+)$
Вам нужно только заключить термин в скобки (
и )
, если вы действительно хотите, чтобы механизм регулярных выражений захватывал их (чтобы вы могли получить их значение из совпадения). Если вам не нужно захватывать их, вы просто хотите выяснить, соответствует ли фрагмент текста, вы можете избавиться от скобок из этого регулярного выражения.
Вместо того, чтобы использовать слегка неловко выглядящий [.]
для представления буквального символа периода, вы можете просто экранировать чувствительный символ обратной косой чертой: \.
.
Кроме того, по умолчанию регулярное выражение будет ожидать, что последовательность будет совпадать ровно один раз, поэтому вам не нужно следовать условию {1}
, потому что это значение по умолчанию.
И я не уверен, что вы имели в виду с термином, полностью заключенным в квадратные скобки [
и ]
, но квадратные скобки нужно использовать только, если вы хотите создать класс символов (чтобы определить набор допустимые символы), такие как существующий [a-zA-Z0-9_-]
.