允许中文字符在有效的电子邮件地址中。

时间:2017-06-01 04:02:12

标签: ios swift

我希望找到一种方法,允许在有效的电子邮件中使用中文字符。

我目前的代码是:

fileprivate func isValidEmail(testStr:String) -> Bool {
    // print("validate calendar: \(testStr)")
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
    return emailTest.evaluate(with: testStr)
}

如何更改上述代码以允许中文字符?谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

以下Regex表达式用于允许其他语言。

(\p{L}),(\w+),(\w),

答案 1 :(得分:1)

the API Reference for NSRegularExpression中所述,您可以使用语法\p{UNICODE PROPERTY NAME}来匹配具有指定Unicode Property的任何字符。如果您想在电子邮件地址中同时使用CJK和拉丁字符,可以尝试在正则表达式中使用“Han”Unicode属性,如下所示:

let emailRegEx = "([A-Z0-9a-z._%+-]|\\p{Han})+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"