我必须解析(在JS中)最初的电子邮件地址,而不是@有一个点。显然我想显示@而不是点。
var mail = "name.domain.xx"
我们有两个案例:
名称本身包含一些点,并且它们被反击:
name\.surname.domain.xx
名称仅包含常规字符(非点)
在this主题中,我找到了实现负面观察的方法,这就是我所做的:
mail = mail.replace(/(\\)?\./, function ($0, $1) { return $1?$0:"@"; });
但它不起作用,因为在情况(1)中它找到了 \。,它没有触及它,当然它会停止。
另一方面,如果我使用 g 选项,它也会替换第三个点获取 name.surname @ domain @ xx
现在,有没有办法说: 我想查看整个字符串,但我想在第一场比赛中停止? 我希望自己解释一下。
干杯
答案 0 :(得分:0)
我第一次回答你的问题时误解了。所以我改变了我的答案。
如果你没有放/ g标志,它只会替换第一个匹配,这意味着你可以在前面没有\
的情况下查找第一个标点符号。其次,您可以使用常规标点符号替换属于电子邮件用户部分的所有\.
。
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);