Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Qt 4.7 QRegExp电子邮件地址验证_C#_C++_Qt_Validation_Email - Fatal编程技术网

C# Qt 4.7 QRegExp电子邮件地址验证

C# Qt 4.7 QRegExp电子邮件地址验证,c#,c++,qt,validation,email,C#,C++,Qt,Validation,Email,我有一个很好的正则表达式模式来验证电子邮件地址。我在php中使用过它,在C#中也使用过它,没有遇到任何问题(还没有)。我在迁移模式并将其与qt的QRegExp一起使用时遇到了相当大的困难 有人能帮我吗 // C# version public bool isEmailAddress(string strEmailAddr) { if (strEmailAddr.Length == 0) return false; Regex rTest = new Regex(

我有一个很好的正则表达式模式来验证电子邮件地址。我在php中使用过它,在C#中也使用过它,没有遇到任何问题(还没有)。我在迁移模式并将其与qt的QRegExp一起使用时遇到了相当大的困难

有人能帮我吗

// C# version
public bool isEmailAddress(string strEmailAddr)
{
    if (strEmailAddr.Length == 0)
        return false;

    Regex rTest = new Regex(@"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", RegexOptions.IgnoreCase);
    return rTest.Match(strEmailAddr).Success;
}

// #C++/Qt 4.7 version ... not working
bool isEmailAddress(QString strEmailAddr)
{
    if ( strEmailAddr.length() == 0 ) return false;

    QString strPatt = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\b";
    QRegExp rx(strPatt);
    return rx.exactMatch(strEmailAddr);
}

C的原始字符串使它更容易编写,但是由于您正在处理C++,需要避免反斜杠:

QString strPatt = "\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b";

在这里,您可以使用此内置函数对字符串进行scape:

QRegExp::escape(QSTRING_HERE)

干杯,伙计,我知道这不是什么,我的错。有趣的是,我为dot做了一个双引号。无论如何,Qt:CaseSensitivity枚举不在作用域内的问题是通过#include so:QString strPatt=“\\b[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}\\b”;如果希望正则表达式不区分大小写(如c#示例中所示),请使用此构造函数。i、 e QRegExp rx(strPatt,Qt::不区分大小写);否则,您可能无法获得c#program.OrcunC的确切行为,我尝试使用setCaseSensitivity,但这些枚举存在范围问题,我将更改构造函数。到目前为止,它是用A-Za-z改编的,谢谢:)