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 && computer ## com
добавлено автор olo, источник
См. Также одно решение для замены ...
добавлено автор leoinfo, источник
mystring.replace (/ @ /, "&&"). replace (/\ ./, "##") :)
добавлено автор alfasin, источник
См. Обновленный ответ ...
добавлено автор ATOzTOA, источник
ответ обновлен.
добавлено автор Rain Diao, источник
удерживайте, вы ожидаете, что результат будет my.email && computer ## com вместо my ## 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, источник
спасибо, но он печатает my ## email && computer.com , я бы хотел, чтобы он печатал my.email && computer ## com
добавлено автор olo, источник
Еще раз спасибо, Uncaught SyntaxError: Неожиданный токен; в строке 15
добавлено автор olo, источник
Большое спасибо @Rain Diao, он печатает my ## email && computer ## com , я думаю, что регулярное выражение должно быть похоже, ничего не делать до @ , после @ , затем замените .
добавлено автор olo, источник
@RainDiao, Большое спасибо за обновление ответа
добавлено автор olo, источник
да, но удалите /g , он не заменит последний . , просто нужно заменить последний .
добавлено автор olo, источник
Честно говоря, я просто не знаю, как заставить регулярное выражение работать как один раз match @ change . после
добавлено автор 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 Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском