Javascript lookbehind在第一场比赛中停止了

时间:2013-05-10 10:24:57

标签: javascript regex

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

var mail = "name.domain.xx"

我们有两个案例:

  1. 名称本身包含一些点,并且它们被反击:

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

  3. this主题中,我找到了实现负面观察的方法,这就是我所做的:

    mail = mail.replace(/(\\)?\./, function ($0, $1) { return $1?$0:"@"; });
    

    但它不起作用,因为在情况(1)中它找到了 \。,它没有触及它,当然它会停止。

    另一方面,如果我使用 g 选项,它也会替换第三个点获取 name.surname @ domain @ xx

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

    干杯

1 个答案:

答案 0 :(得分:0)

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

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

http://jsfiddle.net/GLVNY/2/

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);