0

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

var mail = "name.domain.xx"

我们有两种情况:

  1. name本身包含一些点,它们是反斜杠的:

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

这个主题中,我找到了一种实现负面后瞻的方法,这就是我所做的:

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

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

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

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

干杯

4

1 回答 1

0

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

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

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);
于 2013-05-10T10:43:23.053 回答