2011-07-06 40 views
400

Tôi muốn sử dụng JavaScript (có thể với jQuery) để thực hiện một số xác nhận phía máy khách để kiểm tra xem một chuỗi phù hợp với regex:Kiểm tra xem một chuỗi phù hợp với một regex trong JS

^([a-z0-9]{5,})$ 

Lý tưởng nhất là nó sẽ là một biểu thức trả về true hoặc false.

Tôi là người mới sử dụng JavaScript, không match() làm những gì tôi cần? Có vẻ như để kiểm tra xem một phần của chuỗi có khớp với regex không, không phải toàn bộ.

+0

Bạn có muốn có một trận đấu hoàn toàn, hoặc chỉ xem chuỗi _contains_ một chuỗi con phù hợp? –

+0

Kết hợp hoàn chỉnh - không phải là chuỗi con phù hợp. – Richard

Trả lời

679

Sử dụng regex.test() nếu tất cả các bạn muốn là một kết quả boolean:

/^([a-z0-9]{5,})$/.test('abc1'); // false 

/^([a-z0-9]{5,})$/.test('abc12'); // true 

/^([a-z0-9]{5,})$/.test('abc123'); // true 

... và bạn có thể loại bỏ các () từ regexp của bạn vì bạn đã không cần chụp.

+1

^Ban đầu trong regex có ở đâu? – PedroD

+2

@PedroD^ngụ ý bắt đầu hoặc bắt đầu với – Nagaraju

+0

Vậy bạn sẽ làm điều ngược lại như thế nào? "không bắt đầu bằng ..." – PedroD

28

Sử dụng /youregexp/.test(yourString) nếu bạn chỉ muốn biết liệu chuỗi của bạn có khớp với regexp hay không.

6

Dưới đây là một ví dụ mà sẽ tìm kiếm các thẻ HTML nào đó vì vậy nó rõ ràng rằng /someregex/.test() trả về một boolean:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true'); 
43

Bạn có thể sử dụng match() cũng như:

if (str.match(/^([a-z0-9]{5,})$/)) { 
    alert("match!"); 
} 

Nhưng test() có vẻ là nhanh hơn bạn có thể đọc here.

khác biệt quan trọng giữa match()test():

match() chỉ hoạt động với chuỗi, nhưng test() công trình cũng với số nguyên.

12345.match(/^([a-z0-9]{5,})$/); // ERROR 
/^([a-z0-9]{5,})$/.test(12345); // true 
/^([a-z0-9]{5,})$/.test(null); // false 

// Better watch out for undefined values 
/^([a-z0-9]{5,})$/.test(undefined); // true 
87

Sử dụng test() phương pháp:

var string = "sample1"; 
var re = new RegExp("^([a-z0-9]{5,})$"); 
if (re.test(string)) { 
    console.log("Valid"); 
} else { 
    console.log("Invalid"); 
} 
+0

Thiếu trích dẫn đóng kép trong đối số của hàm tạo. –

+0

Đã thêm dấu ngoặc kép bị thiếu, nhờ @RadkoDinev –

+2

Lưu ý rằng phiên bản có 'RegExp' cho phép chèn các giá trị biến vào chuỗi regex. –

Các vấn đề liên quan