In this Leetcode Valid Phone Numbers problem solution we have given a text file file.txt that contains a list of phone numbers (one per line), write a one-liner bash script to print all valid phone numbers. You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit). You may also assume each line in the text file must not contain leading or trailing white spaces.

Leetcode Valid Phone Numbers problem solution


First Problem solution.

#!/usr/bin/env bash

while read line; do
    if [[ "$line" =~ ^((\([0-9]{3}\) )|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ ]]; then
        echo $line
    fi
done < "file.txt"




Second Problem solution.

grep '[(\d)]{3,5}[ -]?\d{3}-\d{4}$' file.txt


Third Problem solution.

grep -e "^[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}$" -e "^([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}$" file.txt