As I read your regular expression, it says:QRegExp rx("^(?:[7-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9])$");
Match:
- from the start of the string ("^")
- the sub-expression: ("(?:")
- zero or one of 7, 8, or 9 ("[7-9]?")
- followed by zero or one of 0 through 9, up to eight times ("[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?")
- followed by a single digit 0 through 9 ("[0-9]")
- and this must be the entire string (")$")
So your regex will match the following:
- Any string containing only a single digit 0 - 9 (including strings containing only "7", "8", or "9")
- Any string starting with 7, 8, or 9 and ending with any single digit 0 - 9
- Any string starting with 7, 8, or 9 followed by up to eight more digits 0 - 9, ending with one more 0 - 9
- Any string containing one through nine digits between 0 and 9
For example:
- "0" (or "1", "2", ... "9")
- "70" (or "71", "72", ... "99")
- "70" (or "701", "7012", "7013", ... "7012345678")
- "0" (or "01", "012", "0123", ... "012345678"
Note that it will not match "7 22222 222" since this contains embedded whitespace. It will match "722222222".
Edit: So, your regex will match any string of one through eight digits between "0" and "99999999" and also any string of one through nine digits that starts with a "7", "8", or "9".
Last edited by d_stranz; 21st September 2015 at 18:27.
anda_skoa (22nd September 2015)
Nice explanation d_stranz. Way more effort than I put in (no way i was going type type that on my tablet). I hope it is not lost on the OP.
d_stranz (22nd September 2015)
Bookmarks