Hello Programmers, In this post, you will learn how to solve HackerRank Alien Username Solution. This problem is a part of the Regex HackerRank Series.
One more thing to add, don’t straight away look for the solutions, first try to solve the problems by yourself. If you find any difficulty after trying several times, then look for the solutions. We are going to solve the Regex HackerRank Solutions using CPP, JAVA, PYTHON, JavaScript & PHP Programming Languages.

HackerRank Alien Username Word Solution
Problem
In a galaxy far, far away, on a planet different from ours, each computer username uses the following format:
- It must begin with either an underscore,
_
(ASCII value 95), or a period,.
(ASCII value 46). - The first character must be immediately followed by one or more digits in the range 0 through 9.
- After some number of digits, there must be 0 or more English letters (uppercase and/or lowercase).
- It may be terminated with an optional
_
(ASCII value 95). Note that if it’s not terminated with an underscore, then there should be no characters after the sequence of 0 or more English letters.
Given n strings, determine which ones are valid alien usernames. If a string is a valid alien username, print VALID
on a new line; otherwise, print INVALID
.
Input Format
The first line contains a single integer, n, denoting the number of usernames.
Each line i of the n subsequent lines contains a string denoting an alien username to validate.
Constraints
- 1 <= n <= 100
Output Format
Iterate through each of the n strings in order and determine whether or not each string is a valid alien username. If a username is a valid alien username, print VALID
on a new line; otherwise, print INVALID
.
Sample Input
3
0898989811abced
_abce
_09090909abcD0
Sample Output
VALID
INVALID
INVALID
Explanation
We validate the following three usernames:
_0898989811abced_
is valid as it satisfies the requirements specified above. Thus, we print VALID._abce
is invalid as the beginning_
is not followed by one or more digits. Thus, we print INVALID._09090909abcD0
is invalid as the sequence of English alphabetic letters is immediately followed by a number. Thus, we print INVALID.
HackerRank Alien Username Solution in Cpp
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <ctype.h> using namespace std; int foo(char *c) { int i; if(c[0]!='_'&&c[0]!='.') return 0; if(!isdigit(c[1])) return 0; i=2;while(isdigit(c[i]))i++; while(isalpha(c[i]))i++; if(c[i]=='\0')return 1; else if(c[i]=='_'&&c[i+1]=='\0')return 1; else return 0; } int main() { int n; cin>>n; char c[1000]; for(int i=0;i<n;i++) { cin>>c; if(foo(c)) cout<<"VALID\n"; else cout<<"INVALID\n"; } return 0; }
HackerRank Alien Username Solution in Java
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Solution { public static void main(String[] args) { Pattern p=Pattern.compile("(^\\.|_)(\\d+)([a-z]|[A-Z])*(_){0,1}"); Scanner in = new Scanner(System.in); int count = 0; int iterator = in.nextInt(); in.nextLine(); for (int i = 0; i < iterator; i++) { String data = in.nextLine(); Matcher m=p.matcher(data); if(m.find()){ if(m.group().equals(data)){ System.out.println("VALID"); }else{ System.out.println("INVALID"); } }else{ System.out.println("INVALID"); } } } }
HackerRank Alien Username Solution in Python
import re n=int(input()) lines=[] for i in range(0,n): lines.extend(input().split("\n")) for l in lines: if(re.match("^[_.][0-9]{1,}[a-zA-Z]*[_]?$",l)!=None): print("VALID") else: print("INVALID")
HackerRank Alien Username Solution in JavaScript
process.stdin.resume(); process.stdin.setEncoding("ascii"); process.stdin.on("data", function (input) { input = input.split('\n'); var n = parseInt(input[0]), strs = input.slice(1,n+1); for (i=0, j=strs.length; i<j; i+=1) { if (strs[i].match(/^[_\.]\d+[a-z]*_?$/ig)) { console.log('VALID'); } else { console.log('INVALID'); } } });
HackerRank Alien Username Solution in PHP
<?php $_fp = fopen("php://stdin", "r"); /* Enter your code here. Read input from STDIN. Print output to STDOUT */ fscanf($_fp, "%d", $m); $lines = array(); for ($i = 0; $i < $m; $i++) { $line = trim(fgets($_fp)); print (preg_match('/^[_\.][0-9]+[a-z]*_?$/i', $line) ? 'VALID' : 'INVALID') . PHP_EOL; }
Disclaimer: This problem (Alien Username) is generated by HackerRank but the solution is provided by Chase2learn. This tutorial is only for Educational and Learning purposes.