Tôi đã nhìn và tìm kiếm và không thể tìm thấy những gì tôi cần mặc dù tôi nghĩ nó sẽ đơn giản [nếu bạn có bất kỳ trải nghiệm Python nào, điều mà tôi không có].
Cho một chuỗi, tôi muốn xác minh, bằng Python, nó chỉ chứa các ký tự chữ và số: a-zA-Z0-9
và .
_
-
examples:
Accepted:
if re.match["^[a-zA-Z0-9_.-]+$", username]:
0if re.match["^[a-zA-Z0-9_.-]+$", username]:
1if re.match["^[a-zA-Z0-9_.-]+$", username]:
2Phế phẩm:
if re.match["^[a-zA-Z0-9_.-]+$", username]:
3 - Không được phép không gianif re.match["^[a-zA-Z0-9_.-]+$", username]:
4 - @ không phải là chữ và sốTôi đang cố gắng sử dụng:
if re.match["^[a-zA-Z0-9_.-]+$", username]:
5Nhưng điều đó dường như không làm công việc ...
Đã hỏi ngày 25 tháng 3 năm 2010 lúc 21:51Mar 25, 2010 at 21:51
3
if re.match["^[a-zA-Z0-9_.-]+$", username]:
6 không trả lại Boolean; Nó trả về một if re.match["^[a-zA-Z0-9_.-]+$", username]:
7 trên một trận đấu, hoặc if re.match["^[a-zA-Z0-9_.-]+$", username]:
8 trên không phù hợp.>>> re.match["^[a-zA-Z0-9_.-]+$", "hello"]
>>> re.match["^[a-zA-Z0-9_.-]+$", " "]
>>> print re.match["^[a-zA-Z0-9_.-]+$", " "]
None
Vì vậy, bạn không nên làm
if re.match["^[a-zA-Z0-9_.-]+$", username]:
9; Thay vào đó, bạn nên kiểm tra if re.match[r'^[\w.-]+$', username]:
0 trong trường hợp này, có thể được rút ngắn thêm thành if re.match[r'^[\w.-]+$', username]:
1.Đã trả lời ngày 25 tháng 3 năm 2010 lúc 21:56Mar 25, 2010 at 21:56
Mark Rushakoffmark RushakoffMark Rushakoff
243K44 Huy hiệu vàng403 Huy hiệu bạc396 Huy hiệu Đồng44 gold badges403 silver badges396 bronze badges
Không bao giờ sử dụng
if re.match[r'^[\w.-]+$', username]:
2 hoặc if re.match[r'^[\w.-]+$', username]:
3 trong một so sánh. Nhiều loại đã có một bool tương đương mà bạn nên sử dụng thay thế:if re.match["^[a-zA-Z0-9_.-]+$", username]:
Đã trả lời ngày 25 tháng 3 năm 2010 lúc 21:57Mar 25, 2010 at 21:57
Cũng có thể rút ngắn nó một chút để:
if re.match[r'^[\w.-]+$', username]:
Đã trả lời ngày 26 tháng 3 năm 2010 lúc 7:28Mar 26, 2010 at 7:28
Tôi sẽ xem xét điều này cho một tên người dùng hợp lệ: 1] Tên người dùng phải dài 6-30 ký tự2] Tên người dùng chỉ có thể chứa:
1] Username must be 6-30 characters long
2] Username may only contain:
- Chữ hoa và chữ thường
- Số từ 0-9 và
- Ký tự đặc biệt _ -.
3] Tên người dùng có thể không:
Bắt đầu hoặc kết thúc với các ký tự _ -.
Có nhiều hơn một ký tự tuần tự _ -. nội bộ
Đây sẽ là ví dụ về việc sử dụng:
if re.match[r'^[\w.-]+$', username]:
4if re.match[r'^[\w.-]+$', username]:
4Đã trả lời ngày 2 tháng 7 năm 2017 lúc 18:36Jul 2, 2017 at 18:36
sp_omersp_omersp_omer
2813 Huy hiệu bạc12 Huy hiệu Đồng3 silver badges12 bronze badges
Nếu bạn định sử dụng nhiều biểu thức thông thường, bạn có thể biên dịch nó cho tốc độ [hoặc khả năng đọc]
import re
ALPHANUM=re.compile['^[a-zA-Z0-9_.-]+$']
for u in users:
if ALPHANUM.match[u] is None:
print "invalid"
Từ các tài liệu:
Các phiên bản được biên dịch của các mẫu gần đây nhất được chuyển đến
if re.match[r'^[\w.-]+$', username]:
5, if re.match[r'^[\w.-]+$', username]:
6 hoặc if re.match[r'^[\w.-]+$', username]:
7 được lưu trong bộ nhớ cache, vì vậy các chương trình chỉ sử dụng một vài biểu thức thông thường tại một thời điểm cần phải lo lắng về việc biên dịch các biểu thức chính quy.
Đã trả lời ngày 26 tháng 3 năm 2010 lúc 7:37Mar 26, 2010 at 7:37
FabriziomfabriziomfabrizioM
45.1K15 Huy hiệu vàng98 Huy hiệu bạc116 Huy hiệu đồng15 gold badges98 silver badges116 bronze badges
Tôi thực hiện xác nhận của tôi theo cách này trong lớp học của tôi:
def valid_re[self, s, r]:
reg = re.compile[r]
return reg.match[s]
Sau đó, tôi gọi cho trường hợp sử dụng và kiểm tra theo cách này:
if not utils.valid_re[username, r'^[a-zA-Z0-9_.-]+$']:
error = "Invalid username!"
Đã trả lời ngày 28 tháng 2 năm 2013 lúc 1:39Feb 28, 2013 at 1:39
Daniel Watsondaniel WatsonDaniel Watson
4231 Huy hiệu vàng3 Huy hiệu bạc9 Huy hiệu đồng1 gold badge3 silver badges9 bronze badges