2012-08-27 25 views

Trả lời

9

Nếu bạn muốn bao gồm các dấu trừ "-" trong lớp nhân vật, bạn cần phải đặt nó vào cuối khoảng:

val.replace(/[^a-zA-Z_0-9-]/g, '') 
2

Bạn có dải ô sai, xóa - giữa _ và phạm vi số và đặt vào cuối hoặc ở đầu.

3

Bạn hy vọng rằng - nhân vật để được phân tích như là theo nghĩa đen, nhưng nó là trong thực tế phân tích như một loạt: _-0 nghĩa _-0, giống như a-z nghĩa a để z. Tuy nhiên, vì _ có mã ký tự cao hơn 0, bạn gặp lỗi.

Trong trường hợp của bạn, chỉ cần thoát nó: \-. Điều này được phân tích cú pháp là ký tự -.

+0

Dấu gạch chéo ngược thoát nhân vật bên trong một danh sách khung không được phép trong tiêu chuẩn POSIX regex, vì vậy tôi muốn thận trọng để sử dụng nó. –

+0

@SimonRichter: Các hương vị regex JavaScript có nguồn gốc từ Perl, không POSIX. Backslash escaping hoạt động tốt (nhưng di chuyển dấu gạch nối đến cuối là neater). –

2

thử điều này:

val.replace(/[^a-zA-Z_0-9-]/g, ''); 
5

tôi sẽ thích regex này:

val.replace(/[^\w-]+/gi, ""); 
2

Bạn cần phải thoát khỏi "-"

val.replace(/[^a-zA-Z_\-0-9]/g, '') 
0
$(this).val($(this).val().replace(/[^a-zA-Z_0-9-]/g, '')); 
+0

Vui lòng chỉnh sửa với nhiều thông tin hơn. Các câu trả lời chỉ có mã và "dùng thử" này không được khuyến khích, bởi vì chúng không chứa nội dung có thể tìm kiếm được và không giải thích tại sao một người nào đó nên "thử cái này". – Paritosh

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