Javascript Lookback在第一次匹配时停止

Javascript Lookback在第一次匹配时停止,javascript,regex,Javascript,Regex,我必须解析(在JS中)一个最初带有点的电子邮件地址,而不是@。显然我想显示@而不是点 var mail = "name.domain.xx" 我们有两个案例: 名称本身包含一些点,并且这些点是反斜杠: name\.surname.domain.xx 名称仅包含常规字符(非点) 在本主题中,我找到了一种实现消极回顾的方法,我就是这么做的: mail = mail.replace(/(\\)?\./, function ($0, $1) { return $1?$0:"@"; }); 但它不

我必须解析(在JS中)一个最初带有点的电子邮件地址,而不是@。显然我想显示@而不是点

var mail = "name.domain.xx"
我们有两个案例:

  • 名称本身包含一些点,并且这些点是反斜杠:

    name\.surname.domain.xx
    
  • 名称仅包含常规字符(非点)

  • 在本主题中,我找到了一种实现消极回顾的方法,我就是这么做的:

    mail = mail.replace(/(\\)?\./, function ($0, $1) { return $1?$0:"@"; });
    
    但它不起作用,因为在案例(1)中,它找到了\,它没有碰到它,当然它停止了

    另一方面,如果我使用选项g,它也会替换第三个点的名称。surname@domain@xx

    现在,有没有办法说: 我想查看整个字符串,但我想在第一场比赛中停止? 我希望我能解释清楚


    干杯

    我第一次回答你的问题时误解了。所以我改变了我的答案

    如果不放置/g标志,它只会替换第一个匹配项,这意味着您可以查找第一个标点,而不必在标点前面添加
    \
    。其次,您可以使用常规标点符号替换属于电子邮件用户部分的所有
    \.


    换成倒数第二个不是更简单吗。为了??或者你还想知道你的名字。surname@uk.co类似吗?是的,我也希望域边有点。有可能你只是不替换所有\。只有第一步。@kuncajs这是可能的。@thebreiflab:谢谢!它工作得很好,但我也必须处理子域。在这一点上,我可能会留下地址,因为它是…解释符号。但我不能相信没有办法从左开始,跳过所有的\。和第一个匹配。太令人沮丧了。@user2283224哦,字符串是否真的在名称之间的点号之前包含“\`字符,而不是在域部分?那就应该有解决办法了!
    var emailSingle = 'myname.domain.com',
        emailDouble = 'my\\.name\\.another\\.name.domain.com',
        regAt = /([^\\])\./,
        repAt = '$1@',
        regPunct = /\\./g,
        repPunct = '.';
    
    emailSingle = emailSingle.replace(regAt, repAt).replace(regPunct, repPunct);
    emailDouble = emailDouble.replace(regAt, repAt).replace(regPunct, repPunct);
    
    alert('emailSingle: ' + emailSingle + '\nemailDouble: ' + emailDouble);