How to check for strings between certain strings in unix scripting?

前端 未结 3 638
野性不改
野性不改 2021-01-26 11:55

String:

name@gmail.com

Checking for:

@
.com

My code

if [[ $word =~ \"@\" ]] 
then 
    if [[          


        
3条回答
  •  野性不改
    2021-01-26 12:06

    You can use a very very basic regex:

    [[ $var =~ ^[a-z]+@[a-z]+\.[a-z]+$ ]]
    

    It looks for a string being exactly like this:

    at least one a-z char
    @
    at least one a-z char
    .
    at least one a-z char
    

    It can get as complicated as you want, see for example Email check regular expression with bash script.

    See in action

    $ var="a@b.com"
    
    $ [[ $var =~ ^[a-z]+@[a-z]+\.[a-z]+$ ]] && echo "kind of valid email"
    kind of valid email
    
    $ var="a@.com"
    $ [[ $var =~ ^[a-z]+@[a-z]+\.[a-z]+$ ]] && echo "kind of valid email"
    $
    

提交回复
热议问题