java - 如何检查该行与正则表达式(regex)不矛盾?

标签 java regex

抱歉,如果这是重复的,我没有找到类似的问题,也许我错过了一些东西......

我将通过示例解释我想要的内容:

  • 假设我们有一个简单的正则表达式来检查电子邮件

    私有(private)静态最终字符串 EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za -z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

  • 我开始(在某些输入字段中)输入电子邮件(或不是电子邮件,而是一些字符串)一个符号一个符号地输入,并通过正则表达式检查整行。

    • Enter: u
    • Line: u
    • Check: true \\ because there is a chance that I will enter right symbols further

    • Enter: s
    • Line: us
    • Check: true

      ...

    • Enter: @
    • Line: username@
    • Check: true
    <小时/>
    • Enter: @
    • Line: username@@
    • Check: false \\ because there is no way to get correct line appending any symbols
    <小时/>
    • Enter: d
    • Line: username@d
    • Check: true
    <小时/>
    • Enter: .
    • Line: username@domain.
    • Check: true
    <小时/>
    • Enter: .
    • Line: username@domain..
    • Check: false

换句话说,我想通过正则表达式检查字符串,并在附加符号有可能为我们提供正确的字符串时获得肯定的结果。

最佳答案

首先要做的事情...

您的E-Mail Regexwrong

仅仅根据地址的外观来验证电子邮件是极其困难的……大多数时候人们只是做错了。你也是。抱歉。

这实际上并不是关于正则表达式,而是关于用户体验......

您最好允许用户输入他们想要的任何内容,并告诉他们他们的电子邮件是否可能输入错误,而不是阻止用户首先输入它。

关于输入时验证

如果您仍然想使用正则表达式运行,只需将后面的部分设为可选,这样不完整的部分就已经与正则表达式匹配了。

https://regex101.com/r/zO6nM7/1

/^[_a-z0-9-\+.-]+(\.[_a-z0-9-]+)*@?([a-z0-9+\-]+\.)*[a-z0-9+\-]*$/i

关于java - 如何检查该行与正则表达式(regex)不矛盾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199145/

相关文章:

java - 优化 DOM 和 XPath Java 代码

java - 如何在 JPanel 中显示文件中的文本?

java - 退出弹出窗口时防止调用 mouseExited

regex - Gsub在R正则表达式中获取部分匹配的字符串?

Java - 如何测量匹配器处理

java - 连接到数据库,但我只获得默认模式,而不是我在原始系统上创建的模式。有任何想法吗?

java - Spring数据MongoDB : update using dot-notation

javascript - Google Apps 脚本 - TypeError : Cannot read property "1" from null

mysql - SQL 将点或逗号插入 varchar(accounting, money)

java - Java中的正则表达式模式匹配