Краткий ответ
Вы можете использовать что-то вроде этого ( см. На rubular.com ):
username.match(/\.{2}/)
Символу .
предшествует обратная косая черта, {2}
- точный спецификатор повторения, и скобки удаляются, так как в этом случае захват не требуется.
О метасимволах и экранировании
Точка как метасимвол шаблона соответствует (почти) любому символу. Чтобы соответствовать буквальному периоду, у вас есть как минимум два варианта:
- Избегайте точки как
\.
- Сопоставить его синглтоном класса персонажа
[.]
Другие метасимволы, которые могут нуждаться в экранировании: |
(чередование), +
/ *
/ ?
/ {
/ }
(повторение), [
/ ]
(класс символов ) ^
/ $
(якоря), (
/ )
(группировка) и, конечно, \
.
Ссылки
О конечном повторении
Чтобы соответствовать двум буквальным периодам, вы можете использовать, например, \.\.
или [.][.]
, то есть простая конкатенация. Вы также можете использовать конструкцию повторения, например, \.{2}
или [.]{2}
.
Спецификатор конечного повторения также позволяет вам написать что-то вроде x{3,5}
, чтобы соответствовать как минимум 3, но не более 5 x
.
Обратите внимание, что повторение имеет более высокий приоритет, чем конкатенация, поэтому ha{3}
не соответствует "hahaha"
; соответствует "haaa"
вместо . Вы можете использовать группировку, например (ha){3}
, чтобы соответствовать "hahaha"
.
О группировке
Группировка (…)
захватывает строку, с которой он совпадает, что может быть полезно, когда вы хотите захватить совпадение, сделанное подшаблоном, или если вы хотите использовать его как обратную ссылку в других частях шаблона.
Если вам не нужны эти функции, тогда опция не захвата - (?:…)
. Таким образом, что-то вроде (?:ha){3}
по-прежнему соответствует "hahaha"
, как и раньше, но без создания группы захвата.
Если вам на самом деле не нужен аспект группировки, тогда вы можете просто полностью исключить скобки.