QT常用算法和正则表达式

QT常用算法

// todo qt常用算法
# include <QApplication>
# include <QDebug>
using namespace std;
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    double x=-99.9;
    double y=32.1;

    double r=qAbs(x);//求绝对值
    qDebug()<<"qAbs(x):"<<r; //99.9

    double r1=qRound(x);//四舍五入
    qDebug()<<"qRound(y):"<<r1; //-100

    double r2=qFloor(x);//向下取整
    qDebug()<<"qFloor(x):"<<r2; //-100

    double r3=qCeil(x);//向上取整
    qDebug()<<"qCeil(x):"<<r3; //-99

    double r4=qMin(x,y);//求最小值
    qDebug()<<"qMin(x,y):"<<r4; //-99.9


    double r5=qMax(x,y);//求最大值
    qDebug()<<"qMax(x,y):"<<r5; //32.1


    int i=10;
    int j=5;

    double r6=qPow(i,j);//求x的y次方
    qDebug()<<"qPow(x,y):"<<r6; //100000

    double r7=qSqrt(i);//求平方根
    qDebug()<<"qSqrt(x):"<<r7; //3.16228

    //交换
    qSwap(i,j);
    qDebug()<<"i:"<<i<<" j:"<<j; //5 10
    
    return a.exec();
}

正则表达式

基本元字符
    .:匹配除换行符外的任何单个字符。
    ^:匹配字符串的开头。
    $:匹配字符串的结尾。
    *:匹配前面的字符零次或多次。
    +:匹配前面的字符一次或多次。
    ?:匹配前面的字符零次或一次。
    {n}:匹配前面的字符恰好n次。
    {n,}:匹配前面的字符至少n次。
    {n,m}:匹配前面的字符至少n次,但不超过m次。
    []:匹配字符集中的任意一个字符。例如,[abc]匹配a、b或c。
    [^]:匹配不在字符集中的任意一个字符。例如,[^abc]匹配除了a、b、c之外的任意字符。
    |:或操作符,匹配两者中的任意一个。例如,a|b匹配a或b。
    
预定义字符类
    \d:匹配任何数字字符,等价于[0-9]。
    \D:匹配任何非数字字符,等价于[^0-9]。
    \w:匹配任何字母、数字或下划线字符,等价于[a-zA-Z0-9_]。
    \W:匹配任何非字母、数字或下划线字符,等价于[^a-zA-Z0-9_]。
    \s:匹配任何空白字符,包括空格、制表符、换页符等。
    \S:匹配任何非空白字符。

匹配电子邮件地址

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b

匹配URL

https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}(\/[a-zA-Z0-9.-]*)*\/?

匹配日期(YYYY-MM-DD)

\b\d{4}-\d{2}-\d{2}\b

匹配手机号

^1[3578]\d{9}$

//todo 正则
# include <QApplication>
# include <QDebug>
#include <regex>

using namespace std;
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QString Nu="10500591216";
    std::regex pattern("^1[3578]\\d{9}$");

    string  N=Nu.toStdString();//转换为string类型
    bool bRet= std::regex_match(N,pattern);
    if(bRet){
        qDebug()<<"匹配成功";
    }else{
        qDebug()<<"匹配失败";
    }


    return a.exec();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值