Tôi đã tìm thấy rất nhiều xác thực email Regex trong SO nhưng tôi không tìm thấy bất kỳ thứ gì sẽ chấp nhận một chuỗi trống. Điều này chỉ có thể thông qua Regex? Chỉ chấp nhận chuỗi trống hoặc email? Tôi chỉ muốn có cái này trên Regex.
Tôi đã tìm thấy rất nhiều xác thực email Regex trong SO nhưng tôi không tìm thấy bất kỳ thứ gì sẽ chấp nhận một chuỗi trống. Điều này chỉ có thể thông qua Regex? Chỉ chấp nhận chuỗi trống hoặc email? Tôi chỉ muốn có cái này trên Regex.
Câu trả lời:
Mẫu regex này sẽ khớp với một chuỗi rỗng:
^$
Và điều này sẽ khớp (thô sơ) một email hoặc một chuỗi trống:
(^$|^.*@.*\..*$)
^
, trong đó bạn đang tìm email một cách hiệu quả hoặc không có gì ở giữa chuỗi. Đối với điều này (email_regex)?
là phù hợp hơn.
^$
này không hoạt động, nhưng ^(?!.)
thực hiện: [ ^
bắt đầu chuỗi, nhìn (?!)
tiêu cực, .
bất kỳ ký tự nào - không bao gồm nguồn cấp dữ liệu]
phù hợp với chuỗi trống hoặc email
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
phù hợp với chuỗi trống hoặc email nhưng cũng phù hợp với bất kỳ khoảng trắng nào
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
xem thêm về chính email phù hợp với regex:
Các câu trả lời ở trên hoạt động ($ cho sản phẩm nào), nhưng tôi chỉ thử cái này và nó cũng hoạt động để chỉ để trống như vậy:
/\A(INTENSE_EMAIL_REGEX|)\z/i
Điều tương tự theo thứ tự ngược lại
/\A(|INTENSE_EMAIL_REGEX)\z/i
Đừng kết hợp email với regex. Nó cực kỳ xấu và dài và phức tạp và trình phân tích cú pháp regex của bạn có thể không thể xử lý được. Cố gắng tìm một thói quen thư viện để phù hợp với họ. Nếu bạn chỉ muốn giải quyết vấn đề thực tế là khớp địa chỉ email (nghĩa là nếu bạn muốn mã sai xảy ra với (thường) hoạt động), hãy sử dụng liên kết chính quy-expressions.info mà người khác đã gửi.
Đối với chuỗi trống, ^$
được đề cập bởi nhiều người và sẽ hoạt động tốt.
điều này sẽ giải quyết, nó sẽ chấp nhận chuỗi rỗng hoặc chính xác một id email
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Tôi thích /^\s+$|^$/gi
kết hợp không gian trống và trống.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Nếu bạn đang sử dụng nó trong rails - xác thực Activerecord bạn có thể đặt
allow_blank: true
Như:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }