Results 1 to 6 of 6

Thread: Can't get the QRegExp I need

  1. #1
    Join Date
    Dec 2014
    Posts
    82
    Thanks
    10
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Can't get the QRegExp I need

    Hi! I'm trying to get a RegExp to validate the info of a lineedit which accepts 3 numbers followed by DG and then 4 numbers more and a fifth optional.
    For example, valid will be: 123DG1234 or 111DG2222
    Invalid ones would be: 111DG or 111DDD or 111 or 111DG222

    I have the next but when I try to write, I cant. I doesn't let me write a number or letter or anything. I tried using other RegExp I have for other LineEdits and it works fine so I suppose thta the problem is in the setPattern.

    Qt Code:
    1. QRegExp rx9;
    2. rx9.setPattern("[1-9]\\d{3}][DG]\\d{4,5}");
    3. QValidator *validator9 = new QRegExpValidator(rx9, this);
    4. myLineEdit->setValidator(validator9);
    To copy to clipboard, switch view to plain text mode 

    EDIT: Andif I put
    Qt Code:
    1. rx9.setPattern("[1-9]{3}[DG][1-9]{4}");
    To copy to clipboard, switch view to plain text mode 
    It just allows me to write 123D and that's all

    Thank you so much
    Last edited by roseicollis; 30th March 2015 at 11:11.

  2. #2
    Join Date
    Oct 2009
    Posts
    483
    Thanked 97 Times in 94 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: Can't get the QRegExp I need

    There are square brackets (not always balanced) all over the pattern strings you wrote. You should re-read the documentation of QRegExp (especially the paragraph called "Introduction", which describes the syntax and semantics of the square brackets) and you will understand what is going on.

  3. #3
    Join Date
    Dec 2014
    Posts
    82
    Thanks
    10
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: Can't get the QRegExp I need

    Oh I see, the brackets of DG are the problem. Thank you! I thought that it worked in other way until I re-read it

    But I have still another problem, it accepts either 123DG1234 and 123DG12 which is wrong

  4. #4
    Join Date
    Oct 2009
    Posts
    483
    Thanked 97 Times in 94 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: Can't get the QRegExp I need

    Quote Originally Posted by roseicollis View Post
    But I have still another problem, it accepts either 123DG1234 and 123DG12 which is wrong
    Can you post a code sample reproducing the problem? If you get the pattern right, then QRegExpValidator::validate("123DG12", 0) should return QValidator::Intermediate.

  5. #5
    Join Date
    Dec 2014
    Posts
    82
    Thanks
    10
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: Can't get the QRegExp I need

    Hi yeye thx for your help but Its solved now I just had to use exact match in that case only dunno why but... it works so.. Problem solved.

  6. #6
    Join Date
    Dec 2009
    Location
    New Orleans, Louisiana
    Posts
    791
    Thanks
    13
    Thanked 153 Times in 150 Posts
    Qt products
    Qt5
    Platforms
    MacOS X

    Default Re: Can't get the QRegExp I need

    I would recommend that you use QRegularExpression instead of QRegExp in any new code you are writing/fixing. QRegularExpression supports Perl Compatible Regular Expression (PCRE) and much better IMHO.

Similar Threads

  1. Please help on QRegExp
    By lni in forum Qt Programming
    Replies: 6
    Last Post: 25th September 2011, 07:42
  2. QRegExp Help
    By ToddAtWSU in forum Qt Programming
    Replies: 6
    Last Post: 16th November 2010, 15:35
  3. QRegExp
    By tebessum in forum Qt Programming
    Replies: 1
    Last Post: 3rd August 2008, 18:44
  4. QRegExp help
    By Lele in forum Qt Programming
    Replies: 2
    Last Post: 8th February 2008, 10:07
  5. QRegExp Help
    By Ahmad in forum Qt Programming
    Replies: 2
    Last Post: 28th May 2007, 00:13

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.