Simple regular expression


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Simple regular expression
# 1  
Old 05-29-2012
Simple regular expression

Hello,

I don't understand why my regular expression doesn't work.
simply I want to check a phone number of 8 digits doesn't start with 0

Code:
regex1='^([1-9]{1})([0-9]{7})$'

 if [ "`expr \"$1\" : \"$regex1\"`" != "0" ]
        then
         ------
fi

for example this number should be valid 12345678
and this 01234567 or 1234567 not

Thanks.

Last edited by joeyg; 05-29-2012 at 02:44 PM.. Reason: Wrap commands and data with CodeTags
# 2  
Old 05-29-2012
May be ..
Code:
$ regex1='^[1-9]\{1\}[0-9]\{7\}$'
$ x=0122
$ if [ "`expr "$x" : "$regex1"`" -ne 0 ]; then echo yes ;else echo no; fi
no
$ x=12121212
$ if [ "`expr "$x" : "$regex1"`" -ne 0 ]; then echo yes ;else echo no; fi
yes
$

# 3  
Old 05-29-2012
It worked with me by just adding \

Thanks.
# 4  
Old 05-30-2012
Quote:
Originally Posted by eng_asa
It worked with me by just adding \

It would, but remember that, with "!=" you are comparing as string.
"-ne" is for integer comparison with is more accurate in this case since the return value from "expr" would always be an integer.
# 5  
Old 05-30-2012
do we need of the specify the character limit as {1} ?

the character class with a range [1-9] by default matches for a single character within the range right ? in that case no need of specifying
Code:
[1-9]{1}

instead we can go with

Code:
^[1-9][0-9]{7}

I am recently learning regex.. so please correct me if i am wrong
# 6  
Old 05-30-2012
That is correct chidori, but there would need to be a dollar sign at the end, otherwise longer numbers would be matched too.
And in a basic regular expression, which is what expr uses, that would be:
Code:
^[1-9][0-9]\{7\}$

# 7  
Old 05-30-2012
yeah. Got it... Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expression, seemingly simple but

Hello, I want to test a hour variable with an expression regular The format is 00 01 02 03.......19 20 21 22 23 what follows in red doesn't work, it's clear 19 for example can't work. Can you help me the right regular expression ? case "$3" in () # Nothing, OK ! ;; (*) echo... (4 Replies)
Discussion started by: amazigh42
4 Replies

2. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

3. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

4. Shell Programming and Scripting

help in regular expression

<ATTR name="ABCDEFGH" value=""/> <ATTR name="HJYR" value=""/> what would be the regular expression to match both the above strings... Always end with value=""/> always start with <ATTR name=" the ATTR name can be anything.. I need to use this with match() in awk. Thanks.. (1 Reply)
Discussion started by: shekhar2010us
1 Replies

5. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

6. Shell Programming and Scripting

regular expression help

I have a question regarding pattern searching with grep. I have read tutorials all over the place and pretty much understand how to search for patterns and recurring patterns. I, however, need to search for words which have non-repeating occurances. My task is to parse a 'permissions'... (6 Replies)
Discussion started by: Bob565656
6 Replies

7. Shell Programming and Scripting

regular expression

hi, I need a regular expression that returns the user name(s) only!!! from the output of the "who" command. user name ronajt pts/1 Apr 21 14:50 root pts/2 Apr 21 14:52 dorint pts/3 Apr 21 14:52 allago pts/4 Apr 21... (3 Replies)
Discussion started by: jaber87
3 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. UNIX for Dummies Questions & Answers

regular expression...help!!

how to list all text files except the files from 20070712: abc_20070710_123.txt abc_20070711_123.txt abc_20070712_123.txt ls *.txt | egrep"+_^20070710_+\.txt" Any idea please!! Andy (6 Replies)
Discussion started by: andy2000
6 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question