【问题标题】:About Struts2 Email Validator关于 Struts2 电子邮件验证器
【发布时间】:2011-09-13 06:03:14
【问题描述】:

Struts2 有一个完美的电子邮件验证器。其单个电子邮件地址的正则表达式如下:

\\b(^[_A-Za-z0-9-](\\.[_A-Za-z0-9-])*@([A-Za-z0-9-])+((\\.com)|(\\.net)|(\\.org)|(\\.info)|(\\.edu)|(\\.mil)|(\\.gov)|(\\.biz)|(\\.ws)|(\\.us)|(\\.tv)|(\\.cc)|(\\.aero)|(\\.arpa)|(\\.coop)|(\\.int)|(\\.jobs)|(\\.museum)|(\\.name)|(\\.pro)|(\\.travel)|(\\.nato)|(\\..{2,3})|(\\..{2,3}\\..{2,3}))$)\\b 

由于验证 TLD,时间过长。但只要看看它的开始和结束。

我的问题是关于包装 \\b.将 \\b 放在正则表达式的开头和结尾是什么意思(甚至在 ^ 之前和 $ 之后)?

【问题讨论】:

  • 它根本不是“完美的”,它不允许例如本地部分中的加号和等号,并且不允许域部分中的子域(显然是事后才想到的 CCTLD 表达式意外地对此进行了一些补救,但它仍然是错误的)。
  • 好的。但这不是重点。
  • 嗯,他们实际使用的正则表达式更好。文档字符串显然已过时。 svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/…
  • 是的,考虑到已经有^/$,它们似乎是虚假的。

标签: regex email struts2 pattern-matching validation


【解决方案1】:

这是关于单词边界

元字符 \b 是类似于插入符号和美元符号的锚。它在称为“单词边界”的位置匹配。这个匹配是零长度的。

有资格作为单词边界的三个不同位置:

  • 字符串中第一个字符之前,如果第一个字符是单词字符。
  • 字符串中最后一个字符之后,如果最后一个字符是单词字符。
  • 字符串中两个字符之间,一个是单词字符,另一个不是单词字符。

简单地说:\b 允许您使用 \bword\b 形式的正则表达式执行“仅整个单词”搜索。 “单词字符”是可以用来组成单词的字符。所有不是“单词字符”的字符都是“非单词字符”。

您可以在此处阅读更多内容:http://www.regular-expressions.info/wordboundaries.html

【讨论】:

    【解决方案2】:

    它们似乎是多余的,可能是早期版本的正则表达式的残余。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2020-04-10
      • 2018-10-23
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多