为什么我无法在 rubular 上用这个正则表达式匹配多行?
Why am I not able to match multiple lines with this regex on rubular?
我正在使用以下正则表达式(取自 devise 生成的 devise.rb
文件):
\A[^@\s]+@[^@\s]+\z
通常,当我学习正则表达式时,我使用 rubular. For example, if I wanted to learn about the regex /.a./
, I would set up my workspace as shown here:
注意我是如何使用多个示例的:
foo
bar
baz
rubular 给我的反馈是 bar
和 baz
匹配。
现在我想了解设计生成的正则表达式:/\A[^@\s]+@[^@\s]+\z/
。所以我设置了我的 rubular 工作区,如下所示 here:
没有匹配项。因为我有两个例子:
foo@foo.com
cats@cat.com
但我希望他们能匹配。为什么两个测试字符串都不匹配?
这是因为正则表达式 /\A[^@\s]+@[^@\s]+\z/
匹配字符串的开头 \A
和字符串的结尾 \z
.
如果您同时删除 \A
和 \z
而尝试匹配 /[^@\s]+@[^@\s]+/
那么它将匹配两个电子邮件地址,如图所示 here:
此外,值得一提的是 string 的开始和结束不同于 line 的开始和结束。每个都由下面显示的四种不同模式表示,并且在 Regex quick reference:
^ - Start of line
$ - End of line
\A - Start of string
\z - End of string
一个字符串中可以有多个行;但是,单个字符串从 \A
到 \z
。因此,继续这个多电子邮件示例。用行模式的开始和结束替换字符串模式的开始和结束得到:/^[^@\s]+@[^@\s]+$/
也将匹配,如下所示和 rubular:
我正在使用以下正则表达式(取自 devise 生成的 devise.rb
文件):
\A[^@\s]+@[^@\s]+\z
通常,当我学习正则表达式时,我使用 rubular. For example, if I wanted to learn about the regex /.a./
, I would set up my workspace as shown here:
注意我是如何使用多个示例的:
foo
bar
baz
rubular 给我的反馈是 bar
和 baz
匹配。
现在我想了解设计生成的正则表达式:/\A[^@\s]+@[^@\s]+\z/
。所以我设置了我的 rubular 工作区,如下所示 here:
没有匹配项。因为我有两个例子:
foo@foo.com
cats@cat.com
但我希望他们能匹配。为什么两个测试字符串都不匹配?
这是因为正则表达式 /\A[^@\s]+@[^@\s]+\z/
匹配字符串的开头 \A
和字符串的结尾 \z
.
如果您同时删除 \A
和 \z
而尝试匹配 /[^@\s]+@[^@\s]+/
那么它将匹配两个电子邮件地址,如图所示 here:
此外,值得一提的是 string 的开始和结束不同于 line 的开始和结束。每个都由下面显示的四种不同模式表示,并且在 Regex quick reference:
^ - Start of line
$ - End of line
\A - Start of string
\z - End of string
一个字符串中可以有多个行;但是,单个字符串从 \A
到 \z
。因此,继续这个多电子邮件示例。用行模式的开始和结束替换字符串模式的开始和结束得到:/^[^@\s]+@[^@\s]+$/
也将匹配,如下所示和 rubular: