Scala Play:电子邮件正则表达式中的“@”符号无效

Scala Play: Invalid '@' symbol in email regex

我正在尝试放置一个使用 pattern 属性的输入正则表达式以确保用户名有效(下面正则表达式中的 ^[a-zA-Z0-9_]{6,12}$ 部分)或在我的 Scala Play 模板中输入电子邮件.使用 Play 模板,@ 用于指示从 HTML 和 "Scala goes here" 的中断,所以当我有我的输入行并尝试包含电子邮件中使用的 @ 时。它抱怨:

Invalid '@' symbol

我试过:

  1. 正常进行
  2. 三引号,@
  3. 前无转义字符
  4. @
  5. 之前的一个转义字符
  6. @ 前的两个转义字符(带和不带三引号)

    pattern="^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'+/= ?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"

    pattern="""^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'+ /=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"" “

    模式=^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'+/=? ^_`{|}~-]+\@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/

    pattern="^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'+/= ?^_`{|}~-]+\@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"= 18=]

有什么想法吗?

(EDIT 抱歉,所以不会显示包裹在 input 标签中的东西,而且它也不会让我将上面的格式设置为代码,所以我不得不只添加 pattern=". .." 在我原来的 post 之后没有格式化,抱歉。)

在 Scala Play 模板中转义 @ 可以通过将符号加倍来执行。

使用 @@ 将文字 @ 引入模式。

但是,由于您在这里使用的是正则表达式,因此请注意,也可以使用十六进制 \u0040 or \x40(但仅当 \ 是文字时,即应该将其转义为正则表达式引擎,如 """\u0040""",这样 Scala 就不会将其解析为 Unicode 字符)。