Sign in to follow this  
Followers 0
ale1981

RegEx help

10 posts in this topic

#1 ·  Posted (edited)

Can somebody help me with this RegEx expression?

I have tried but can't seem to get it to work, what I need is to verify a string, the string can only contain these characters ( C, X, J, P, L, B ) and numbers but must also be in this format;

[char][number][space][char][number]......

e.g.

C1 X4 B1

C3

 

Is this something RegEx can do?

 

Thanks in advance.

Edited by ale1981

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

$string = "C1 X4 B1"
; $string = "C1 X4 B1 X9 J0"
If StringRegExp($string, "^([BCJLPX]\d)( [BCJLPX]\d)*$") Then ConsoleWrite("ok")

Match

C1 X4 B1

C1 X4 B1 X9 J0

Edited by jguinch

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

$string = "C3"
 ;$string = "C1 X4 B1 X9 J0"
 ;$string = "C1a"
 If StringRegExp($string, "^([BCJLPX]\d(?=\h|$))+") Then ConsoleWrite("ok")

Strictly following the requirements

Edited by mikell

Share this post


Link to post
Share on other sites

@mikell - The h is for the space?


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

Why doesn't this work...

If StringRegExp($string, "^([BCJLPX]\d)( \1)*$") Then ConsoleWrite("ok")

"1" referring back to the first captured group.


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

@kylomas : your expression matches something like C1 C1 C1 C1 only (where 1 is the group value, not the expression). Use (?1) instead if 1 :

If StringRegExp($string, "^([BCJLPX]\d)( (?1))*$") Then ConsoleWrite("ok")
Edited by jguinch
1 person likes this

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

kylomas,

h is for any horizontal white space, in this case "space" is not well defined so let's assume that it may be a chr(32) as well as a horizontal tab

@jguinch

Thus "TAB should not match" is not sure  :P

If not StringRegExpReplace($string, "[BCJLPX]\d(?:\h+|$)", "") Then ConsoleWrite("ok")
Edited by mikell

Share this post


Link to post
Share on other sites

 

@kylomas : your expression matches something like C1 C1 C1 C1 only (where 1 is the group value, not the expression). Use (?1) instead if 1 :

If StringRegExp($string, "^([BCJLPX]\d)( (?1))*$") Then ConsoleWrite("ok")

 

Thanks jguinch that worked :)

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

@jguinch - Thanks, I was telling it to match the value captured when I meant to repeat the expression, DOH!

edit:

@mikell - Thanks...

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0