如何将Java Regex转换为JS regex?

时间:2017-07-11 15:00:47

标签: javascript regex

Java Regex:

String regex = "(?i)^[\\w.-][\\+\\w.-]*+@[\\w.-]+\\.[a-z]{2,4}$";
  Pattern  pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher("santo+abc@gmail.com");
 System.out.println(matcher.matches());

JS Regex:

 var regex = /^[\w.-][\w\+.-]*+@[\w.-]+\.[a-z]{2,4}$/i;

但JS正则表达式不是一个有效的表达式。不知道我在这里缺少什么。请指导

2 个答案:

答案 0 :(得分:0)

*+是占有量词。它就像*,但如果匹配的次数少于可用的匹配则失败。但是,由于@无法与[\w\+.-]匹配,因此您可以将其替换为*

var regex = /^[\w.-][\w\+.-]*@[\w.-]+\.[a-z]{2,4}$/i;

此外,请勿使用此正则表达式来验证电子邮件地址;这是不正确的。请参阅Regex validation of email addresses according to RFC5321/RFC5322了解正确的内容。

答案 1 :(得分:0)

尝试:

/^[\w.-][\w\+.-]*@[\w.-]+\.[a-z]{2,4}$/i

我在+之后删除了*,因为JavaScript并不支持占有量词。

您可以在此处试用此正则表达式:https://regex101.com/r/FmUF5M/1