|
Thank you for the sample and the link. It works.
|
|
|
|
|
I ran that Regex against your test case and it works perfectly. What output are you getting? What does your code look like that's calling it?
|
|
|
|
|
Member 8216828 wrote: I am trying to figure out how to parse html line and take from it the $ sign and a the monetary value.
In general it isn't a good idea to parse html/xml via regular expressions.
Instead one should use a html/xml parser.
One might use regex if all of the following is true.
1. The source(s) for html/xml are limited. Thus for example there is only one source and there is unlikely to be another.
2. The source is machine generated (thus a library was used to create it rather than an adhoc code of some sort.)
The reason this isn't a good idea is because there are many variations in the way html/xml can be formatted. By the time one has accounted for all of those variances either one has a parser or one has a maintenance problem (or maintenance nightmare).
|
|
|
|
|
Hi Guys,
I have three Regex and would like to know if it's possible to combine them into one.
I'm validating phone numbers in the form:
- 0219081234
- 021 908 1234
- 021-908-1234
here are my regex for the above in order:
- var phoneRegex1 = /^(\d{3})(\d{3})(\d{4})$/;
- var phoneRegex2 = /^(\d{3})(\-)(\d{3})(\-)(\d{4})$/;
- var phoneRegex3 = /^(\d{3})(\ )(\d{3})(\ )(\d{4})$/;
Thanks in Advance,
Morgs
|
|
|
|
|
Just use ? operator
Like this:
^\d{3}-?\s?\d{3}-?\s?\d{4}$
You can flame me whichever way you want and I wouldn't care a bit.
But if you group me with some idiots, I'll turn into your worst nightmare.
|
|
|
|
|
Thanks a ton Firo,
will give it a try...
Morgs
|
|
|
|
|
I think that would match values like:
123456-7890
123456 7890
123456- 7890
123-4567890
123-456 7890
123-456- 7890
123 4567890
123 456-7890
123 456- 7890
123- 4567890
123- 456-7890
123- 456 7890
123- 456- 7890
Which are not in his spec.
|
|
|
|
|
If you want to ensure that the separators (if any) between the groups are the same, I think you need to use a backreference[^].
Something like this perhaps:
(?'Area'\d{3})(?(?=(\s|-))(?'Sep'(\s|-)))(?'Prefix'\d{3})(?(Sep)\k<Sep>)(?'Number'\d{4})
modified on Sunday, July 17, 2011 2:00 PM
|
|
|
|
|
I think this is what you need.
^\d{3}(-|\s)?\d{3}(-|\s)?\d{4}$
|
|
|
|
|
Have a look at this pattern:
^\d{3}[\s-]?\d{3}[\s-]?\d{4}$
modified on Tuesday, August 23, 2011 8:35 PM
|
|
|
|
|
I'm looking for a regex which can match the a value between brackets and deal with a seperator character within.
This is the format I'm after:
[?#?]
where ? can be one or more characters and # is '+', '-' or '='
It should match the following.
[1+1]
[A=T]
[AB=#1#2#3]
So far I've got this:
\[.*[\+-=]?\]
But it doesn't work well, it includes text between the 'tags'.
[A=B]ShouldNotInclude[1=3] (but it does )
I'm obviously doing something wrong,the whole regex probably.
Anyone got an idea?
Found the problem, not the solution.
Problem is that it jumps to the last ']' character it can detect.
modified on Thursday, May 26, 2011 9:15 AM
|
|
|
|
|
Got it:
\[(.*?)[\+-=](.*?)\]
|
|
|
|
|
What you saw is called 'greedy' matching. The better regex engines support non-greedy matching operators, which behave a bit more intuitively, even if they make the regex unreadable!
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
guys;
I use a regular expression such as /(\*\.\w{2,4}( )*,)*( )*\*\.\w{2,4}/ to validate a string like '*.doc, *.docx, *.xls, *.xlsx, *.pdf, *.ppt, *.pps'.
but the validation doesn't sucseed.
what shall i do;
Help people,so poeple can help you.
|
|
|
|
|
Ali Al Omairi(Abu AlHassan) wrote: what shall i do
Make a friend of expresso[^]
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
Good tool, man;
100
Help people,so poeple can help you.
|
|
|
|
|
Thank you [EOS]
Help people,so poeple can help you.
|
|
|
|
|
I just started reading about regular expressions and they seem quite complex. So I am going to try really hard to understand them. But I am worried that if I ever want to use regular expressions at work I need to present a format that everyone could understand. So I was thinking something like:
Dim regEx As New RegExBuilder
regEx.MatchStart.SequenceOfText.MatchChar("@").SequenceOfText.MatchChar(".").SequenceOfText(2, 3).MatchEnd
If Not Regex.IsMatch(TextBox1.Text, regEx.GetExpression) Then
MessageBox.Show("This is not a valid email address")
End If
Does that exist or am I saying something really stupid?
I was thinking of making something like that myself, just for fun and to get to know regular expressions myself.
If I succeed and people are interested I could probably put it in an article here on CP too
It's an OO world.
|
|
|
|
|
|
|
Naerling wrote: I was thinking of making something like that myself
Well, go, man, go! It looks like a fun exercise. You could certainly start with just the parts you need now and add more as needed. You may need to leave out more "advanced" stuff like nested groups, but just encapsulating the most basic functionality may be of use to many.
|
|
|
|
|
I read some articles about regular expressions, that much all strings except matched, but I can't get it working.
In our system we have numeric user names. They are in form "99/999/999", where "9" is of course any number. We want to control access to some functionalities by using regular expressions. I mean we have a table with two columns, one contains regular expression, that matches some numbers, and second column contains a code, that informs, which functionality is available. So if we want users, that have numbers starting with "01" to access functionality "Functionality1", we have entry:
01/[0-9]{3}/[0-9]{3}, Functionality1 .
But there's a functionality, that is inaccessible by a group of users, that have a number, that starts with 23/123/. And I can't figure out how to do it (in a simple form). The only thing I can make working is to combine ranges. So I have something like:
([0-1][0-9]/[0-9]{3}/[0-9]{3})|(2[0-2]/[0-9]{3}/[0-9]{3})...
And this way I can combine a number of ranges to match only those, I want to match. But this makes it quite difficult to check for errors and modify. How can I make a regex, that excludes all numbers, that start with 23/123 without specifying all ranges, that are allowed?
Don't forget to rate answer, that helped you. It will allow other people find their answers faster.
|
|
|
|
|
The exact details depends on which regex engine you are using, but in most, the construct [^2-5] for example would match any character NOT in the range 2 to 5 inclusive. Give it a try with your favourite regex tester. (There are some good ones online.)
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
I'm using .NET built-in engine. I tried, but it ends up with very complicated expression. I think we'll try to find another solution.
Don't forget to rate answer, that helped you. It will allow other people find their answers faster.
|
|
|
|
|
I know this is probably not the answer you are looking for, but you can add a third column to your table of type boolean. Then you can make decisions to allow or deny access to functionality-X based on the content of your regexp and the flag: if the flag is set, the expression must match in order for the functionality to be available; if the flag is not set, the expression must not match in order for the functionality to be available. In other words, functionality is available only when regexp.IsMatch is equal to the flag from the table. This will improve your maintainability as well, because the target regexps will be a lot more readable.
|
|
|
|