我需要確保電子郵件有效。而且我還需要檢查其中是否存在任何可疑的UTF字符。我不驗證它與正則表達式驗證UTF的Java電子郵件驗證
^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
但是,如何檢查它的UTF?
感謝
我需要確保電子郵件有效。而且我還需要檢查其中是否存在任何可疑的UTF字符。我不驗證它與正則表達式驗證UTF的Java電子郵件驗證
^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
但是,如何檢查它的UTF?
感謝
你想確保它是有效的w.r.t. RFC 5335 section 4.1?
如果是這樣,您只能檢查一個byte[]
是否是有效的UTF-8。由於UTF-8是字節串到碼點串的映射,而UTF-16是碼字串映射的字節串,因此嘗試驗證一系列UTF-16代碼單元(Java char
s)或代碼點是有效的UTF-8是沒有意義的。是代碼單元 - >unicode-scalar-values的映射。 "Unicode Encoding Forms"的第3.9節解釋了所有這些。
告訴byte[]
是否是良好形成的UTF-8序列的最佳方法是使用內置的解碼器,例如一個StandardCharsets.UTF8
或番石榴等價物Charsets.UTF8
。
如果你想確保只有ASCII字符的電子郵件地址,您可以使用這一模式:
"[^\\x00-\\x7F]"
它將馬赫任何非ASCII字符。
我沒有看到任何可以匹配任何怪異字符的正則表達式。你總是在做'a-z'等等,而不是'''或者任何東西。 –