2011-01-20 65 views
13

Tôi cần regex để xác thực chuỗi ký tự chữ và số có độ dài từ 3-5 ký tự. Tôi đã thử theo regex được tìm thấy từ web, nhưng nó thậm chí không bắt được chữ và số một cách chính xác.regex JavaScript cho chuỗi chữ và số có độ dài từ 3-5 ký tự

var myRegxp = /^([a-zA-Z0-9_-]+)$/; 
if(myRegxp.test(value) == false) 
{ 
    return false; 
} 
+2

Xem xét việc học đọc regex để bạn có thể tìm ra điều gì đáp ứng nhu cầu của bạn và điều đó không phù hợp. Hoặc tốt hơn, vì vậy bạn có thể viết của riêng bạn. – BoltClock

+1

Đó là ý tưởng tốt, nhưng tôi không có thời gian cho công việc này để làm điều đó, nhưng tất nhiên đó là những gì tôi sẽ phải làm. – newbie

Trả lời

44

thêm {3,5} đến biểu hiện của bạn có nghĩa là chiều dài từ 3 đến 5

/^([a-zA-Z0-9_-]){3,5}$/ 
+0

bạn có cần dấu ngoặc đơn không? – EralpB

+0

@EralpB vâng, chúng tôi cần dấu ngoặc đơn ('()') để kiểm tra độ dài của chữ và số như toàn bộ –

4

Bạn sẽ phải xác định chữ cái và số chính xác, nhưng

/^(\w{3,5})$/ 

nên phù hợp với bất kỳ chữ số/nhân vật/_ kết hợp chiều dài 3-5.

Nếu bạn cũng cần các dấu gạch ngang, chắc chắn để thoát khỏi nó ( \-) thêm nó, như thế này::

/^([\w\-]{3,5})$/ 

Ngoài ra: các ^neo có nghĩa là trình tự phải bắt đầu từ đầu dòng (chuỗi ký tự) và $ kết thúc ở cuối dòng (chuỗi ký tự). Vì vậy, chuỗi value của bạn không được chứa bất kỳ thứ gì khác hoặc chuỗi đó sẽ không khớp.

+1

Bạn không cần thoát khỏi dấu gạch ngang nếu đó là ký tự đầu tiên hoặc cuối cùng bên trong một lớp ký tự. –

+0

Không biết rằng (và tôi đã sử dụng regex trong nhiều thập kỷ ;-). Cảm ơn. Nhưng nó cũng không đau, phải không? –

0

Đầu tiên kịch bản này kiểm tra các dây N có ký tự từ 3 đến 5.

Đối đa ngôn ngữ (arabic, Ukraina) bạn Phải sử dụng này

var regex = /^([a-zA-Z0-9_-\u0600-\u065f\u066a-\u06EF\u06fa-\u06ff\ufb8a\u067e\u0686\u06af\u0750-\u077f\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-\ufd8f\ufd92-\ufdc7\ufe70-\ufefc\uFDF0-\uFDFD]+){3,5}$/; regex.test('мшефн'); 

khác khôn ngoan bên dưới là dành cho Tiếng Anh Chỉ có chữ số

/^([a-zA-Z0-9_-]){3,5}$/ 

PS liều như trên không chấp nhận ký tự đặc biệt

một điều cuối cùng liều như trên không mất nhiều không gian như kiểm tra nó sẽ thất bại nếu có không gian nếu bạn muốn không gian sau đó thêm sau 0-9 \ s

\s 

Và nếu bạn muốn kiểm tra chiều dài của tất cả chuỗi, hãy thêm chấm.

var regex = /^([a-zA-Z0-9\[email protected],!=%$#&_-\u0600-\u065f\u066a-\u06EF\u06fa-\u06ff\ufb8a\u067e\u0686\u06af\u0750-\u077f\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-\ufd8f\ufd92-\ufdc7\ufe70-\ufefc\uFDF0-\uFDFD]).{1,30}$/; 
Các vấn đề liên quan