2 рядки замінюють javascript

Я новачок, як їх поєднати:

var mystring = "[email protected]";
document.write(mystring.replace(/@/, "&&"));

prints my.email&&computer.com

var mystring = "[email protected]";
document.write(mystring.replace(/\./, "##"));

prints my##[email protected]

I have two questions: How do I make this regex (mystring.replace(/./, "##") to after @ change the dot to ## and how can I combine those two lines into one, and final read is:my.email&&computer##com

1
@Rain Diao так, потрібен цей код my.email && ## com
додано Автор olo, джерело
Перегляньте також єдине рішення для заміни ...
додано Автор leoinfo, джерело
mystring.replace (/ @ /, "&&"). замінити (///, "##") :)
додано Автор alfasin, джерело
Переглянути оновлену відповідь ...
додано Автор ATOzTOA, джерело
відповідь оновлено.
додано Автор Rain Diao, джерело
тримайтеся, ви очікуєте, що результат my.email && computer ## com замість мого ## email && computer ## com ?
додано Автор Rain Diao, джерело

5 Відповіді

input : [email protected]

result : my.first.last.email&&example##computer##com

Рішення 1:

var mystring = "[email protected]";
//replace '.' after '@' with '##', then replace '@' with '&&'.
var result = mystring.replace(/(?!.*@)\./g, "##").replace(/@/, "&&");
document.write(result);

Рішення 2 (налаштовується):

var mystring = "[email protected]";

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

var str =  "[email protected]";

//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
4
додано
так! Поставте цей пункт для правильної відповіді, BTW, як повернути результати з другого? document.write (str.replace ()) ?
додано Автор olo, джерело
спасибі, але він друкує мій ## email && computer.com , щоб надрукувати my.email &&
додано Автор olo, джерело
ще раз спасибі, Uncaught SyntaxError: Несподіваний маркер; на лінії 15
додано Автор olo, джерело
Велике спасибі @Rain Diao, він друкує мій ## email && computer ## com , мабуть, вираз має бути схожим, нічого не робити перед/code>, потім замінити .
додано Автор olo, джерело
@RainDiao, Велике спасибі за оновлення відповіді
додано Автор olo, джерело
так, але видалити /g , він не замінить останній . , необхідний для заміни останнього .
додано Автор olo, джерело
Дякуємо, але я просто не знаю, як зробити регулярний вираз, щоб він працював так само, як один раз @ змінити . після
додано Автор olo, джерело
він використовував /g , тобто всі . будуть замінені на ##
додано Автор Muhammad Talha Akbar, джерело
тримайтеся, я оновлюю свою відповідь.
додано Автор Rain Diao, джерело
тепер обидва рішення працюють для вас.
додано Автор Rain Diao, джерело
див. оновлення.
додано Автор Rain Diao, джерело

Спробуйте це...

var mystring = "[email protected]";
document.write(mystring.replace(/(.*@.*)\./, "$1##").replace(/@/, "&&"));
2
додано
Дуже дякую. це працює :-)
додано Автор olo, джерело
Оновлено відповідь, щоб пропустити заміну точки до @.
додано Автор ATOzTOA, джерело
@olo Пам'ятайте, що це замінює лише одне входження @ і крапку.
додано Автор ATOzTOA, джерело

Це має працювати:

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

Результат:

my.email&&computer##com

See it here working: http://jsfiddle.net/gnB85/

1
додано
Дякую! @ не змінюється, але подвоюється
додано Автор olo, джерело
@olo - Я не помітив, що ви хотіли замінити "@" на два "&" ... Тепер це виправлено. Замість заміни "@" ви отримуєте "&&" замість одного регулярного виразу
додано Автор leoinfo, джерело

You could use split to split the string at /@/ and apply the second regexp to the second part of the string, then join the results back together with &&.

1
додано

Спробуйте це:

var mystring = "[email protected]"
document.write(mystring.replace(/\.(?!\[email protected])/, '##').replace(/@/, '&&'));
0
додано
Дякую! але він друкує ## y.email && computer.com
додано Автор olo, джерело
@olo doh. Забуваю втекти з точки, відповідь виправлена
додано Автор rbernabe, джерело
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram