C# Qt 4.7 QRegExp电子邮件地址验证
我有一个很好的正则表达式模式来验证电子邮件地址。我在php中使用过它,在C#中也使用过它,没有遇到任何问题(还没有)。我在迁移模式并将其与qt的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(
// 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改编的,谢谢:)