【问题标题】:String Dot String (Mail without Domain) RegEx字符串点字符串(没有域的邮件)正则表达式
【发布时间】:2009-12-02 02:42:39
【问题描述】:

真的被这个简单的正则表达式卡住了。需要它来验证一个字符串,这将是一封没有“@domain.xxx”的邮件。

它必须满足以下规则:

  • 必须有一个字符串(只有字母)开头。
  • 必须有一个字符串(只有字母)结尾。
  • 这两个字符串必须用点分隔。
  • 完整的字符串不能包含任何数字或符号。

我正在尝试类似... /^[a-z]+$/^[.]+$/[a-z]+$/i ...但没有成功。

【问题讨论】:

  • 您在它们永远无法匹配的地方使用了行锚^$ 的开始/结束,即。 e.在字符串的中间。这可能就是您的正则表达式失败的原因。
  • 哦,斜线 / 通常表示正则表达式的开头和结尾作为 JavaScript 对象,所以当然也不能出现在正则表达式中。

标签: javascript regex mootools validation


【解决方案1】:
/^[A-Za-z]+\.[A-Za-z]+$/

适用于 ASCII 字母。

如果您还想允许使用国际字母(äá 等),请尝试

/^[^\W\d_]+\.[^\W\d_]+$/

[^\W\d_] 表示“任何不是非字母数字字符、不是数字且不是下划线的字符”。

【讨论】:

  • \w 匹配 alphanumerics,因此要仅获取 alpha,请使用 [^\W\d_][[:alpha:]]
  • 根据 RFC 规范,您可能还应该考虑像 !、# 和 $ 这样的字符。 en.wikipedia.org/wiki/Email_address#RFC_specification
  • 很好,现在可以了。谢谢蒂姆。 :) 我讨厌正则表达式有一段时间了。 :P
  • 查看regular-expressions.info 以获得很棒的教程。一旦你掌握了它,它就不会那么糟糕了:)
  • @Jan:我的老板没有要求做的任何事情都不会考虑。 :)
【解决方案2】:

/^[a-zA-Z]+\.[a-zA-Z]+$/?

【讨论】:

  • 这不允许大写字母。
  • 你错了 Jan。没关系。我没有说任何关于 uc 或 lc 的内容。 ;)
  • @Jan 没问题,我可以忍受 :-) 我创建这个正则表达式只是为了显示@Raul 在创建他的版本时错过了什么。要添加不区分大小写,他可以添加 /i 标志或修改它,如另一个答案所示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2014-01-24
相关资源
最近更新 更多