| | |
Regular Expressions
Please support our C# advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Jul 2005
Posts: 483
Reputation:
Solved Threads: 19
ok, new to regular expressions so can someone please explain something to me. In trying to create an expression to check if an entry is between 1 and 15, I first came up with:
[1-9]|1[0-5]
this didn't work however
1[0-5]?|[2-9]
did work.
I understand why the second one works, but not why the first one didn't.
[1-9]|1[0-5]
this didn't work however
1[0-5]?|[2-9]
did work.
I understand why the second one works, but not why the first one didn't.
k... I'm not a RexEx guru either but I'm going to give it a shot, bolded blue text text will be subject of my explanation when regex expressions are used...
your expression [1-9]|1[0-5]
Scenario A: [1-9]|1[0-5] means match any number 1 thru 9, pretty basic
[1-9]|1[0-5] is a logical operator [OR]
Scenario B:[1-9]|1[0-5] means any number zero thru five
ok now that we broke it down lets look at what your expression would match...
1 = match based on scenario A
2 = match basesed on A
... up to 9 would match!
10 = now comes the fun part the 1 would match Scenario A and since there was a match it doesnt evaluate it under scenario B and 0 gets ignored.
11 = again Scenario A twice and doesn't even get to scenario B
so for it two work you must have it backwards
1[0-5]|[1-9]
and I would even go a step further and make sure the match is not in the middle of a string by adding ^ in the begging of the expression to indicate begining of line or a word and $ at the end of the expression to indicated end of line or word, like so...
(^1[0-5]$)|(^[1-9]$)
I hope this helps.
your expression [1-9]|1[0-5]
Scenario A: [1-9]|1[0-5] means match any number 1 thru 9, pretty basic
[1-9]|1[0-5] is a logical operator [OR]
Scenario B:[1-9]|1[0-5] means any number zero thru five
ok now that we broke it down lets look at what your expression would match...
1 = match based on scenario A
2 = match basesed on A
... up to 9 would match!
10 = now comes the fun part the 1 would match Scenario A and since there was a match it doesnt evaluate it under scenario B and 0 gets ignored.
11 = again Scenario A twice and doesn't even get to scenario B
so for it two work you must have it backwards
1[0-5]|[1-9]
and I would even go a step further and make sure the match is not in the middle of a string by adding ^ in the begging of the expression to indicate begining of line or a word and $ at the end of the expression to indicated end of line or word, like so...
(^1[0-5]$)|(^[1-9]$)
I hope this helps.
![]() |
Similar Threads
- Regular Expressions (VB.NET)
- Parsing a log file using regular expressions (C#)
- Regular Expressions (Computer Science)
- Regular Exp (Python)
- mod_rewrite: help with regular expressions (Linux Servers and Apache)
- matching regular expressions (Java)
Other Threads in the C# Forum
- Previous Thread: Inharits userControl
- Next Thread: Help with Icons
| Thread Tools | Search this Thread |
.net access ado.net algorithm array barchart bitmap box broadcast buttons c# capturing chat check checkbox client color combobox control conversion csharp custom database datagrid datagridview dataset datetime degrees development draganddrop drawing encryption enum event excel file files form format forms function gdi+ httpwebrequest image index input install java label libraries list listbox listener loop mandelbrot math mouseclick mysql networking operator path photoshop picturebox pixelinversion post programming radians regex remote remoting richtextbox running... save saving serialization server sleep socket sql statistics stream string table tcp text textbox thread time timer treeview update usercontrol validation view visualstudio webbrowser windows winforms wpf xml





