无需使用lookbehind即可重写此正则表达式-JS

时间:2018-11-12 14:57:14

标签: javascript node.js regex

只有很少的Regex经验,我试图在node.js中实现一些电子邮件屏蔽,所有这些在本地都运行良好,但是一旦推送到服务器,我将收到无效的Regex错误。

可在此处找到正则表达式代码示例

https://regexr.com/42uid

var email = 'foo@bar.com'
const regex = /(.)[^@\n](?=[^@\n]*[^@\n]@)|(?:(@.)|(?!^)\G(?=[^@]*$)).(?!$)/g;
const maskedEmail = email.replace(regex, '*');

maskedEmail应该返回

  f*o@b*r.com

我已经将问题缩小为“后向/向前看”,据我所知,它在JS中不可用。但是我不知道如何最好地重写它。

1 个答案:

答案 0 :(得分:1)

您可以将其捕获为多个组,然后用$1$2等替换该数据。

通过使用此正则表达式:^(.).*(.@.).*(.\.[^\.]+)$
并使用以下替换字符串:$1*$2*$3
它将导致:f*o@b*r.com

链接到我的小提琴:https://regexr.com/42um8