Qt使用正则实例

// integers 1 to 9999
QRegExp rx("[1-9]\\d{0,3}");
// the validator treats the regexp as "^[1-9]\\d{0,3}$"
QRegExpValidator v(rx, 0);
QString s;
int pos = 0;

s = "0";     v.validate(s, pos);    // returns Invalid
s = "12345"; v.validate(s, pos);    // returns Invalid
s = "1";     v.validate(s, pos);    // returns Acceptable

rx.setPattern("\\S+");            // one or more non-whitespace characters
v.setRegExp(rx);
s = "myfile.txt";  v.validate(s, pos); // Returns Acceptable
s = "my file.txt"; v.validate(s, pos); // Returns Invalid

// A, B or C followed by exactly five digits followed by W, X, Y or Z
rx.setPattern("[A-C]\\d{5}[W-Z]");
v.setRegExp(rx);
s = "a12345Z"; v.validate(s, pos);        // Returns Invalid
s = "A12345Z"; v.validate(s, pos);        // Returns Acceptable
s = "B12";     v.validate(s, pos);        // Returns Intermediate

// match most 'readme' files
rx.setPattern("read\\S?me(\.(txt|asc|1st))?");
rx.setCaseSensitive(false);
v.setRegExp(rx);
s = "readme";      v.validate(s, pos); // Returns Acceptable
s = "README.1ST";  v.validate(s, pos); // Returns Acceptable
s = "read me.txt"; v.validate(s, pos); // Returns Invalid
s = "readm";       v.validate(s, pos); // Returns Intermediate 

  QRegExp rxlen("(\\d+)(?:\\s*)(cm|inch)");
  int pos = rxlen.indexIn("Length: 189cm");
  if (pos > -1) {
      QString value = rxlen.cap(1); // "189"
      QString unit = rxlen.cap(2);  // "cm"
      // ...
  }

//匹配所有符合条件字符串
QString str = “123123124143123123”;
    QRegularExpression regE("^[0-9]*$");
    QRegularExpressionMatchIterator it = regE.globalMatch(str);

    while (it.hasNext()) {
        QRegularExpressionMatch match = it.next();
        processReceivedTCPFrames(match.captured().toLocal8Bit());
    }
    
//匹配所有符合条件字符串
    QRegExp reg("^[0-9]*$");
    int pos = 0;
    while ((pos = reg.indexIn(str , pos)) != -1) {
        qDebug()<<reg.cap(0);
        pos += reg.matchedLength();
    }

//经纬高
	//+-180 6位小数
    QRegExp rxLon("^-?(180|1?[0-7]?\\d(\\.\\d{1,6})|[1-9]?\\d(\\.\\d{1,6})?)$");
    QRegExpValidator *validatorLon = new QRegExpValidator(rxLon, this);
    ui.lineEdit_10->setValidator(validatorLon);

//+-90 6位小数
    QRegExp rxLat("^-?(90|[1-6]?\\d(\\.\\d{1,6})?)$");
    QRegExpValidator *validatorLat = new QRegExpValidator(rxLat, this);
    ui.lineEdit_11->setValidator(validatorLat);

//+-1000000 2位小数
    QRegExp rxHeight("^-?(1000000|1?\\d{1,6}(\\.\\d{1,2})?)$");
    QRegExpValidator *validatorHeight = new QRegExpValidator(rxHeight, this);
    ui.lineEdit_12->setValidator(validatorHeight);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值