Return a privacy-friendly display value for a valid email: retain the first local-part character, replace the remaining local characters with asterisks, and keep the domain unchanged. Return null for malformed input.
Requirements
Require one non-empty local part and domain
Keep a one-character local part readable
Do not mutate input
Example
Input
ada@example.com
Expected output
a**@example.com
Show a hint
Write down the input contract and the failure cases before coding.
tests
RUNTIME OUTPUT
Ready to run the file open above against 2 tests.
Runs the open file in a restricted browser worker
LEARN FROM THE SOLUTION
Why the solution works.
The validation step makes the display contract explicit before indexing the local part. Math.max handles a one-character name without asking repeat for a negative count, and the original domain stays visible so the user can recognize the account.
What this exercise teaches
String methods
Input validation
Edge cases
A PRACTICAL PLAN
Work through Mask an email address for display with intent.
Translate the contract.Turn the requirements into a short checklist before editing your-solution.js.
Use the example as evidence.Predict the result for the supplied input, then add one boundary case such as an empty value, a limit, or unexpected input.
Review the implementation.Compare your choices against solution.js only after a real attempt.
EXERCISE FAQ
Before you move on.
What does “Mask an email address for display” teach?
This beginner JavaScript exercise focuses on String methods, Input validation, Edge cases. Its requirements define the exact behavior to implement before you write code.
How should I validate this JavaScript solution?
Start with the displayed example input and expected output, then test a boundary case suggested by the requirements. Open your-solution.js and select Run code. The browser executes that file in an isolated worker against the visible test cases.
When should I open the reference solution?
Attempt Mask an email address for display first. Then open the read-only solution file to compare the contract, edge-case handling, and implementation choices—not simply to copy the final code.