作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有电子邮件模式:
^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w.-]*[ a-zA-Z0-9]\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$
以及尝试从字符串获取电子邮件的示例代码:
String email = "NAME <firstname_lastname@domain.com>";
Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);
if (matcher.find()) {
System.out.println(matcher.group());
}
当 regexp 包含 ^
和 $
字符时,matcher.find()
返回 false,但是当 regexp 不包含这些字符时,全部为很好:我在控制台中看到 firstname_lastname@domain.com
。
您能解释一下带和不带 ^
和 $
的正则表达式之间的区别吗?
如何强制匹配器使用包含 ^
和 $
的正则表达式?
最佳答案
^ & $
匹配字符串的开头和结尾(如果打开了多行开关,则匹配行或全文)。如果您需要从文本中提取电子邮件,您可以从模式中修剪它们。
String EMAIL_PATTERN = "^[a-zA-Z0-9][\\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$";
String email = "NAME <firstname_lastname@domain.com>";
Pattern pattern = Pattern.compile(EMAIL_PATTERN.substring(1, EMAIL_PATTERN.length()-1));
Matcher matcher = pattern.matcher(email);
if (matcher.find()) {
System.out.println(matcher.group());
}
输出
firstname_lastname@domain.com
关于java 匹配器不处理 ^ 和 $ 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653464/
我是一名优秀的程序员,十分优秀!