【问题标题】:Creating a conditional to validate Email addresses创建一个条件来验证电子邮件地址
【发布时间】:2014-06-06 06:44:05
【问题描述】:

我在我使用的 php 脚本中使用了基于 preg_match 的“正则表达式”。正则表达式是^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$

如何将其合并到 bash 条件中以测试电子邮件地址的基本结构?我的电子邮件地址在一个名为“电子邮件”的文件中。 (它根据需要循环通过)。喜欢if [cat email | '/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/' ]; then { 管他呢。我不知道怎么写。谁能帮忙...

【问题讨论】:

  • 'bash 条件'是什么意思?请澄清谢谢,
  • 一个条件如 if [ TRUE ];然后 { 别的东西。代替 TRUE 的条件。

标签: regex bash cat


【解决方案1】:

使用您的正则表达式并将其调整为bash 以测试变量email 中保存的地址:

#!/bin/bash
if [[ $email =~ ^[[:alnum:]_.-]+@[[:alnum:]_.-]+\.[[:alpha:]]{2,6}$ ]]
then
    echo "Good address"
else
    echo "Bad address"
fi

注意事项:

  • 这使用 [[...]] 构造,因此普通的 POSIX shell 不会这样做:需要 bash 或更好。

  • =~ 运算符将字符串(在本例中为电子邮件地址)与 POSIX 扩展正则表达式匹配。

  • 电子邮件地址的实际规范(查看RFC5322)非常复杂(请参阅此示例,但已过时regex),您的正则表达式只是一个近似值。

【讨论】:

  • 谢谢。如果我使用您的代码,我将如何按照您的建议添加下划线?还是已经有了?
  • 您的笔记是指注释 2 中的 +~ 还是 =~?
  • @user3386373 感谢您发现+~ 错字:我刚刚修复了它。此外,已经添加了下划线。我将加号、百分比和其他字符留给您自行决定。
  • 非常感谢。这真的很有帮助。
猜你喜欢
  • 2014-05-23
  • 2014-06-12
  • 1970-01-01
  • 2012-07-14
  • 2020-03-12
  • 2018-03-13
  • 2011-09-02
  • 2013-02-20
  • 2014-03-12
相关资源
最近更新 更多