我有一个很好的正则表达式模式来验证电子邮件地址。我在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);
}
答案 0 :(得分:7)
C#的原始字符串使编写起来更容易,但是由于你正在处理C ++,你需要转义反斜杠:
QString strPatt = "\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b";
答案 1 :(得分:2)
这里你可以使用这个内置函数来逃避你的字符串:
QRegExp::escape(QSTRING_HERE)