1

我是初学者,如何结合它们:

var mystring = "my.email@computer.com";
document.write(mystring.replace(/@/, "&&"));

印刷my.email&&computer.com

var mystring = "my.email@computer.com";
document.write(mystring.replace(/\./, "##"));

印刷my##email@computer.com

我有两个问题:如何将这个正则表达式 (mystring.replace(/./, "##")@更改dot为之后,## 以及如何将这两行合二为一,最终读取是:my.email&&computer##com

4

5 回答 5

4

输入 :my.first.last.email@example.computer.com

结果 :my.first.last.email&&example##computer##com

解决方案1:

var mystring = "my.first.last.email@example.computer.com";
//replace '.' after '@' with '##', then replace '@' with '&&'.
var result = mystring.replace(/(?!.*@)\./g, "##").replace(/@/, "&&");
document.write(result);

解决方案2(可配置):

var mystring = "my.email@computer.com";

var replacements = {
                    '@' : '&&',
                    '.' : '##'
                   };

var str =  "my.first.last.email@example.computer.com";

//match latter part of the string
var result = str.replace(/@\w+(\.\w+)+/g, function(at_and_after) {
    //replace all '.' and '@' in that part.
    return at_and_after.replace(/@|\./g, function(m) { return replacements[m]});
});
document.write(result);  //console.log(result) or alert(result) is a better way for demo
于 2013-02-07T03:53:36.153 回答
2

试试这个...

var mystring = "my.email@computer.com";
document.write(mystring.replace(/(.*@.*)\./, "$1##").replace(/@/, "&&"));
于 2013-02-07T03:55:03.190 回答
1

您可以使用 split 在 /@/ 处拆分字符串并将第二个正则表达式应用于字符串的第二部分,然后将结果与 && 重新连接在一起。

于 2013-02-07T03:52:58.460 回答
1

这应该有效:

var mystring = "my.email@computer.com";
document.write(mystring.replace(/(.*?)(@)(.*?)(\.)(.*)/, "$1&&$3##$5"));

结果:

my.email&&computer##com

在这里看到它的工作:http: //jsfiddle.net/gnB85/

于 2013-02-07T04:10:02.357 回答
0

试试这个:

var mystring = "my.email@computer.com"
document.write(mystring.replace(/\.(?!\w+@)/, '##').replace(/@/, '&&'));
于 2013-02-07T04:03:19.173 回答