我应该更改什么模式进行验证



我必须验证电子邮件的两种类型的表达式:

字母.字母.年份大于 2018@uts.edu.co

j.g.2019@uts.edu.co

0-2018.letter.letter@*.com.co

0.j.g@cloudmail.com.co

我使用了这两个正则表达式,但它们不起作用:

[a-zA-Z] + [.]?[a-zA-Z] + [.]?[2-9] [0-9] (?! 18 $( [1-9] [1-9] ?+ $ \ @ uts ([.]( edu ([.]( co

\ b ([0] |

20 [0-1] [0-8] | 2019( \ b + [.]?[a-zA-Z] + [.]?[a-zA-Z] + \ @ [ a-zA-Z] ([.]( com ([.]( co

private void btn_validarActionPerformed(java.awt.event.ActionEvent evt) {                                            
String w_correo = caja_correo.getText();
Pattern p_correo1 = Pattern.compile("^[a-zA-Z]+[.]?[a-zA-Z]+[ .]?[2-9][0-9](?!18$)[1-9][1-9]?+$\@uts([.])edu([\.])co$");
    Matcher m_correo1 = p_correo1.matcher(w_correo);
Pattern p_correo2 = Pattern.compile("^\b([0]|20[0-1][0-8]|2019)\b+[.]?[a-zA-Z]+[.]?[a-zA-Z]+\@ [a-zA-Z] ([.])com([\.])co$");
    Matcher m_correo2 = p_correo2.matcher(w_correo);    
    if (m_correo1.matches()) {
String validacion = "";
validacion = validacion +  "Direccion de correo electrónico correcta<br/>";
correcto.setForeground(Color.GREEN);
}
    else { 
String validacion = "";
    if (!m_correo1.matches()) {
    validacion= validacion + "Direccion de correo electrónico incorrecta<br/>";
            incorrecto.setBackground(Color.RED);
    }
}
    if (m_correo2.matches()) { 
String validacion = "";
validacion = validacion +  "Direccion de correo electrónico correcta<br/>";
correcto.setForeground(Color.GREEN);
}
    else {String validacion = "";
    if (!m_correo2.matches()) {
    validacion= validacion + "Direccion de correo electrónico incorrecta<br/>";
            incorrecto.setBackground(Color.RED);
    }
}
}                                           

当您尝试验证有效的电子邮件时,结果是电子邮件不正确。 按钮 NO 显示为红色,但按钮 SI 未显示为绿色。

下面的正则表达式与您描述的模式匹配:"letter.letter.year 大于 2018@uts.edu.co"。

([a-zA-Z].){2}([2-9][1-9][0-9]{2}|20([2-9][0-9]|19))@uts.edu.co
([a-zA-Z].){2} matches any letter followed by a period two times.
([2-9][1-9][0-9]{2}|20([2-9][0-9]|19)) matches the year 2019 or greater
@uts.edu.co matches @uts.edu.co literally.

在这里尝试一下:https://regex101.com/r/hNIMRL/1

尝试以下正则表达式:"(?:[a-zA-Z]\.({2}([0-9]{4}(\@uts.edu.co">

我已经为您的示例电子邮件对其进行了测试。 使用年份的捕获组可以验证年份是否大于 2018。 正则表达式将仅匹配遵循您的字母模式的电子邮件.字母.四位数 Year@uts.edu.co

这是我用来测试正则表达式.java:

import java.util.regex.Pattern;

公共类 MainApp {

public static void main(String[] args) {
   // reg ex to use:  (?:[a-zA-Z].){2}([0-9]{4})@uts.edu.co
    String[] email = {"j.g.2018@uts.edu.co","s.c.2019@uts.edu.co","t.t.2020@gmail.com"};
    String regExPattern = "(?:[a-zA-Z]\.){2}([0-9]{4})\@uts.edu.co";
    Pattern p = Pattern.compile( regExPattern );
    for(String x : email){
            Matcher m = p.matcher( x );
            boolean b = m.matches();
            if(b){
                int year = Integer.parseInt(m.group(1));
                if(year > 2018){
                System.out.println(x + " is valid");
                }
                else{
                System.out.println(x + " is not valid");
                }
            }
            else{
            System.out.println(x + " is not valid");
            }
        }
}}

从我的控制台记录:

j.g.2018@uts.edu.co 无效

s.c.2019@uts.edu.co 有效

t.t.2020@gmail.com 无效

干杯!

对于这种类型的电子邮件 letter.letter.year 大于 2018@uts.edu.co 如 j.g.2019@uts.edu.co 您可以使用:

^[a-zA-Z].[a-zA-Z].(?:2019|20[2-9][0-9]|2[1-9][0-9]{2}|[3-9][0-9]{3})@uts.edu.co$
  • ^ 字符串开头
  • [a-zA-Z].[a-zA-Z]. 匹配 2 次字符 a-z 后跟一个点
  • (?:2019|20[2-9][0-9]|2[1-9][0-9]{2}|[3-9][0-9]{3}) 比赛范围大于 2018
  • @uts.edu.co匹配@uts.edu.co
  • $ 字符串结尾

在爪哇语中

String regex = "^[a-zA-Z]\.[a-zA-Z]\.(?:2019|20[2-9][0-9]|2[1-9][0-9]{2}|[3-9][0-9]{3})@uts\.edu\.co$";

正则表达式演示

对于这种类型的电子邮件 0-2018.letter.letter@*.com.co,您可以使用 0.j.g@cloudmail.com.co:

^(?:2018|201[0-7]|200[0-9]|1[0-9]{1,3}|[0-9]{1,3}).[a-zA-Z].[a-zA-Z]@w+(?:.w+)*.com.co$
  • ^ 字符串开头
  • (?:2018|201[0-7]|200[0-9]|1[0-9]{1,3}|[0-9]{1,2})范围从 0 到 2018
  • .[a-zA-Z].[a-zA-Z] 匹配 2 次一个点,后跟一个字符 a-z
  • @w+(?:.w+)*匹配@,重复1+次单词字符,然后重复0+次点和1+单词字符
  • .com.co匹配.com.co
  • $ 字符串结尾

在爪哇语中

String regex = "^(?:2018|201[0-7]|200[0-9]|1[0-9]{1,3}|[0-9]{1,3})\.[a-zA-Z]\.[a-zA-Z]@\w+(?:\.\w+)*\.com\.co$";

正则表达式演示

相关内容

  • 没有找到相关文章

最新更新