I use the following regex @"^(.+)/([^/]+)$"
and I need to check
if its path contains alfanumeric like slash.
Currently it is working
but if I put like aaa/bbb/ I got error since I have the last path after bbb. How can I solve it?
Asked
Active
Viewed 60 times
0

user3241019
- 811
- 9
- 20

Jean Tehhe
- 1,247
- 5
- 19
- 38
-
If you capture with `.` and `[^/]`, respectively, the path will contain quite a bit more than just alphanumeric characters. – O. R. Mapper Apr 13 '14 at 16:14
-
1Agreed, the `.*` is a dangerous plan. something like `(\d*|\w*)+` is really alphanumeric – abc123 Apr 13 '14 at 16:19
-
How deep can be the path? Is it always 2-level deep? If it is, then `^\w+/\w+/?$` will work for your. If it is 2-or-more-level deep, then `^(\w+/)+\w+/?$` will work for you. – Ulugbek Umirov Apr 13 '14 at 16:39
-
Check [this question](http://stackoverflow.com/questions/23045378/regex-for-path-and-alpha-numeric-character/23045688#23045688). This may help you. – Sabuj Hassan Apr 13 '14 at 17:14
1 Answers
1
Regex
^(.*)\/([^\/]+)(\/)?$
Description
^ assert position at start of the string
1st Capturing group (.*)
.* matches any character (except newline)
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
\/ matches the character / literally
2nd Capturing group ([^\/]+)
[^\/]+ match a single character not present in the list below
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\/ matches the character / literally
3rd Capturing group (\/)?
Quantifier: Between zero and one time, as many times as possible, giving back as needed [greedy]
Note: A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
\/ matches the character / literally
$ assert position at end of the string
C# Code
string pattern = "^(.+)\/([^\/]+)(\/)?$";
Alphanumeric Regex
^(\w*)\/(\w*)(\/)?$

abc123
- 17,855
- 7
- 52
- 82
-
Thanks ,voted up .Sorry but this is part of what I want .I need alphanumeric with slash that's it,can you help please?here you can put @ or $ and its still working... – Jean Tehhe Apr 13 '14 at 16:26
-
@abc123 `\w` already includes digits. And you don't need to escape `/`. – Ulugbek Umirov Apr 13 '14 at 17:49
-
@UlugbekUmirov updated and you do need to escape `/` unless you do `@"/";` in C# – abc123 Apr 13 '14 at 20:13
-
-
@UlugbekUmirov according to http://regex101.com/r/sH2iH7 you do...perhaps not with C# – abc123 Apr 13 '14 at 20:43
-
@abc123 [What special characters must be escaped in regular expressions?](http://stackoverflow.com/a/400316/1803777) - and `^\w*/\w*/?$` works fine in C#. `Console.WriteLine(Regex.IsMatch("abc123/def456", @"^\w*/\w*/?$"));` or without `@` - `Console.WriteLine(Regex.IsMatch("abc123/def456", "^\\w*/\\w*/?$"));` <= you may notice that / is not escaped. – Ulugbek Umirov Apr 13 '14 at 20:50