Tôi đang cố gắng viết cụm từ thông dụng chỉ định văn bản đó phải bắt đầu bằng chữ cái, mỗi ký tự phải là chữ cái, số hoặc dấu gạch dưới, không nên có 2 dấu gạch dưới trong một hàng và nó sẽ kết thúc bằng một chữ cái hoặc số. Tại thời điểm này, điều duy nhất tôi có là ^[a-zA-Z]\w[a-zA-Z1-9_]
nhưng điều này dường như không hoạt động đúng vì nó chỉ bao giờ khớp với 3 ký tự và cho phép gạch dưới lặp đi lặp lại. Tôi cũng không biết cách xác định các yêu cầu cho ký tự cuối cùng.Biểu thức chính quy - bắt đầu và kết thúc bằng một chữ cái, chỉ chấp nhận chữ cái, số và _
Trả lời
^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$
Dưới đây là một giải pháp sử dụng một lookahead tiêu cực (không được hỗ trợ trong tất cả các động cơ regex):
^[a-zA-Z](((?!__)[a-zA-Z0-9_])*[a-zA-Z0-9])?$
Kiểm tra rằng nó hoạt động như mong đợi:
import re
tests = [
('a', True),
('_', False),
('zz', True),
('a0', True),
('A_', False),
('a0_b', True),
('a__b', False),
('a_1_c', True),
]
regex = '^[a-zA-Z](((?!__)[a-zA-Z0-9_])*[a-zA-Z0-9])?$'
for test in tests:
is_match = re.match(regex, test[0]) is not None
if is_match != test[1]:
print "fail: " + test[0]
nhìn thấy cách các quy tắc là khá phức tạp, tôi 'd đề xuất những điều sau:
/^[a-z](\w*)[a-z0-9]$/i
khớp toàn bộ chuỗi và chụp trung gian e ký tự. Sau đó, với chức năng chuỗi hoặc regex sau:
/__/
kiểm tra xem phần đã chụp có hai dấu gạch dưới liên tiếp hay không. Ví dụ bằng Python nó sẽ trông như thế này:
>>> import re
>>> def valid(s):
match = re.match(r'^[a-z](\w*)[a-z0-9]$', s, re.I)
if match is not None:
return match.group(1).count('__') == 0
return False
Tôi sẽ đưa một đâm vào nó:
/^[a-z](?:_?[a-z0-9]+)*$/i
Giải thích:
/
^ # match beginning of string
[a-z] # match a letter for the first char
(?: # start non-capture group
_? # match 0 or 1 '_'
[a-z0-9]+ # match a letter or number, 1 or more times
)* # end non-capture group, match whole group 0 or more times
$ # match end of string
/i # case insensitive flag
Các tổ chức phi chụp chăm sóc a) không cho phép hai số _
(nó buộc ít nhất một chữ cái hoặc số cho mỗi nhóm) và b) chỉ cho phép char cuối cùng là một chữ cái hoặc số.
Một số chuỗi thử nghiệm:
"a": match
"_": fail
"zz": match
"a0": match
"A_": fail
"a0_b": match
"a__b": fail
"a_1_c": match
Điều này hữu ích hơn câu trả lời được chấp nhận vì nó giải thích ý nghĩa của từng ký tự nhóm/ký tự. Cảm ơn các chi tiết như regex thường là ngôn ngữ ngoài hành tinh. –
- 1. Trình xác thực biểu thức chính quy cho các chữ cái và số chỉ
- 2. Xác thực: Chỉ chữ cái, số và -
- 3. jQuery xác thực plugin: chỉ chấp nhận các chữ cái?
- 4. regex chỉ bằng dấu cách và chữ cái?
- 5. 6 chữ số biểu thức chính quy
- 6. Ghi lại các chữ cái lặp lại trong PHP - Biểu thức chính quy
- 7. Biểu thức chính quy kết thúc
- 8. Làm thế nào để tách một chuỗi giữa các chữ cái và chữ số (hoặc giữa các chữ số và chữ cái)?
- 9. Javascript regex chỉ chấp nhận chữ cái, dấu cách và ñ
- 10. Chọn tất cả nơi [chữ cái đầu tiên bắt đầu bằng chữ B]
- 11. Tôi cần biểu thức chính quy nào để kiểm tra một số ký tự không phải là chữ cái Latinh?
- 12. Cách lấy chữ cái thứ n của bảng chữ cái
- 13. Làm thế nào để làm cho một TextBox chỉ chấp nhận các ký tự chữ cái?
- 14. Javascript: Tìm ra chữ cái trước trong bảng chữ cái
- 15. Tắt chữ cái và chữ cái đặc biệt trong Visual Basic.NET
- 16. giá trị chữ và số cfspreadsheet kết thúc bằng d
- 17. Cách kiểm tra, nếu chuỗi php chỉ chứa chữ cái và chữ số tiếng Anh?
- 18. Kết thúc hoạt động cũ và bắt đầu một cái mới hoặc ngược lại
- 19. giải nén chuỗi bắt đầu với và kết thúc với một cái gì đó trong C#
- 20. HTML 5 - biểu thức chính quy số
- 21. Plugin xác thực jQuery: chỉ chấp nhận các ký tự chữ cái?
- 22. Chữ cái đầu tiên của Javascript/jQuery chữ hoa đầu tiên với một số ngoại lệ?
- 23. Quy tắc ngón tay cái để viết hoa các chữ cái bằng ngôn ngữ lập trình
- 24. Kiểm tra xem chuỗi có chứa số và chữ cái
- 25. Kiểm tra NSString chứa cả chữ cái và số
- 26. Cụm từ thông dụng để khớp với chuỗi chữ cái và yêu cầu ít nhất một chữ hoa và một chữ thường (vb.net)
- 27. Biểu thức cron trong unix/linux cho phép chỉ định ngày bắt đầu và ngày kết thúc chính xác
- 28. Bootstrap Typeahead chỉ hiển thị chữ cái đầu tiên
- 29. Matplotlib: chỉ cho phép in chữ cái đầu tiên
- 30. biểu thức chính quy để tìm chỉ có 6 chữ số trong văn bản PostgreSQL
gì ngôn ngữ/regex phương ngữ bạn đang sử dụng? –
Tại sao lớp nhân vật cuối cùng của bạn không bao gồm số không? – SilentGhost
Tôi không chắc chắn. Tôi đang thử nghiệm nó trong notepad ++ mặc dù. Đối với không bao gồm số không, đó là một sai lầm. – jreid9001