2017-02-22 5 views
0

Я работаю со следующим регулярным выражением (взято из devise.rb файла, который генерирует devise):Почему я не могу сопоставить несколько строк с этим регулярным выражением на рублевом?

\A[^@\s][email protected][^@\s]+\z 

Обычно, когда я учусь о регулярных выражениях я использую rubular. Например, если бы я хотел, чтобы узнать о регулярных выражений /.a./, я бы установить мое рабочее место, как показано here:

enter image description here

Обратите внимание, как я использую несколько примеров:

foo 
bar 
baz 

И Rubular дает мне обратную связь, что и bar, и baz матч.

Теперь я хотел бы узнать о регулярном выражении, которое создает: /\A[^@\s][email protected][^@\s]+\z/. Так что я создал свой Rubular рабочее пространство, как показано здесь here:

enter image description here

Существует не совпадение. Потому что у меня есть два примера:

[email protected] 
[email protected] 

Но я ожидал, что они оба совпадут. Почему оба тестовых строки не совпадают?

+0

Rubular тесты на нитке. Слова «Ваша тестовая строка:» над соответствующей рамкой - это ключ. –

ответ

1

Это потому, что регулярное выражение /\A[^@\s][email protected][^@\s]+\z/ соответствует началу строки с \A и концом строки \z.

Если вы удалите как \A и \z и вместо того, чтобы попытаться соответствовать /[^@\s][email protected][^@\s]+/ тогда он будет соответствовать как адреса электронной почты, как показано here:

enter image description here

Кроме того, стоит отметить, что в начале и в конце строка отличается от начала и конца строки . Каждый представлены четыре различных узоров, представленных ниже, а также на Rubular в Regex quick reference:

^ - Start of line 
$ - End of line 
\A - Start of string 
\z - End of string 

Там может быть несколько линий в строки; однако одна строка идет от \A до \z. Поэтому, чтобы продолжить этот пример с несколькими письмами. Замена начала и конца строки шаблонов с началом и концом строки шаблонов, чтобы получить: /^[^@\s][email protected][^@\s]+$/ будет также соответствовать, представленным ниже и на rubular:

enter image description here

Смежные вопросы