如何仅限制电子邮件地址中的数字。我在下面试过但没成功。我的电子邮件应该接受α-数字,点,连字符和下划线,然后是"@AnyDomain.com"。但是它不应该只接受像"112233@gmail.com"这样的数字。
Pattern regexPattern = Pattern.compile("^[(a-zA-Z0-9-\\_\\.!\\D)]+@[(a-zA-Z)]+\\.[(a-zA-Z)]{2,3}$");
Matcher regmatcher = regexPattern.matcher(email);发布于 2019-10-01 17:25:55
发布于 2019-10-01 17:35:23
我已经修改了问题中提供的正则表达式。
[a-zA-Z]+[(a-zA-Z0-9-\\_\\.!\\D)]*[(a-zA-Z0-9)]+@[(a-zA-Z)]+\.[(a-zA-Z)]{2,3}我在开始时添加了a+,以确保电子邮件地址不以数字开头。如果电子邮件地址可以以特殊符号开头,请确保在第一个块中更新它。
发布于 2019-10-01 17:39:25
对电子邮件使用regex可能会有问题。电子邮件并不像你想象的那么简单--有很多有效的字符。理想情况下,您应该让浏览器这样做,input[type="email"],并向您的用户发送激活电子邮件,以证明电子邮件地址是有效的,但我理解,可能有一个合法的需要验证地址上的服务器。
这里有有用的信息:https://stackoverflow.com/a/201378/1921385
仍然需要一个rx?
根据https://emailregex.com/,W3C用于验证input[type=email]的正则表达式是:
/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/所以你可以用这个,拿出数字部分:
/^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/下面是一个演示:
input {border:10px solid red;}
input:valid {border-color:green;}<input type="text" required="required" pattern="^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" placeholder="type=text, using a pattern" />
<input type="email" required="required" placeholder="type=email, no pattern here" />
https://stackoverflow.com/questions/58189462
复制相似问题