2010-09-06 22 views
5

Cách đặt xác thực trên trường không chỉ cho phép các ký tự đặc biệt, có nghĩa là AB#,[email protected],@#ASD được phép nhưng không được phép @#$^& hoặc #. Tôi cần RegEx để xác thực này.Cách sử dụng regex để kiểm tra xem đầu vào của người dùng không chỉ bao gồm các ký tự đặc biệt?

+2

điều này không liên quan gì đến jQuery, ý bạn là javascript? –

+5

Nono ... JavaScript đã được đổi tên thành jQuery, didntchya biết? – mpen

+0

@OP: Bạn có thể muốn xem http://bassistance.de/jquery-plugins/jquery-plugin-validation/ và http: // stackoverflow.com/questions/280759/jquery-validate-how-to-add-a-quy tắc-cho-regular-expression-validation – mpen

Trả lời

9
str.match(/^[A-Z#@,]+$/) 

sẽ phù hợp với một chuỗi ...

  • ... bắt đầu và kết thúc ^$ với mô hình khép kín
  • ... chứa bất kỳ ký tự chữ hoa A-Z (sẽ không phù hợp thấp chữ hoa chữ thường)
  • ... chỉ chứa các ký tự đặc biệt #, @,
  • ... có ít nhất 1 ký tự (không có chuỗi trống)

Để phân biệt chữ hoa chữ thường, bạn có thể thêm i vào cuối: (ví dụ: /pattern/i)

** CẬP NHẬT **

Nếu bạn cần phải xác nhận nếu lĩnh vực này chỉ chứa sản phẩm đặc biệt nhân vật, bạn có thể kiểm tra xem chuỗi chỉ chứa ký tự không phải là chữ hoặc số:

if (str.match(/^[^A-Z0-9]*$/i)) { 
    alert('Invalid'); 
} else { 
    alert('Valid'); 
} 

Điều này sẽ khớp với chuỗi chỉ chứa các ký tự không phải chữ và số. Một chuỗi rỗng cũng sẽ mang lại giá trị không hợp lệ. Thay thế * bằng + để cho phép chuỗi trống hợp lệ.

+0

tôi nghĩ rằng tôi đã không làm cho bạn hiểu, điểm là có quá nhiều ký tự đặc biệt và những gì tôi đã viết trước đó chỉ là các trường hợp ["AB #, A89 @, @ # ASD được cho phép nhưng @ # $^hoặC# không được phép"]. Nó có thể là bất kỳ kết hợp nào như A * B, AB *, * Ab nhưng không nên chỉ có các ký tự đặc biệt. Cách duy nhất để sử dụng ký tự đặc biệt trên trường cụ thể đó là liên kết charater đặc biệt với chữ số [eg-9()] hoặc với bất kỳ ký tự nào.whta để làm gì ?? – Arko

+0

yes javascript .. – Arko

2

Nếu bạn có thể sử dụng "đối sánh phủ định" để xác thực, i. e. đầu vào là OK nếu regex không không trận đấu, sau đó tôi đề nghị

^\W*$ 

này sẽ phù hợp với một chuỗi mà chỉ gồm các ký tự không-word (hoặc chuỗi rỗng).

Nếu bạn cần một trận đấu tích cực, sau đó sử dụng

^\W*\w.*$ 

này sẽ phù hợp nếu có ít nhất một ký tự chữ và số trong chuỗi.

0

Tôi tin rằng những gì bạn đang muốn tìm một cái gì đó như thế này:

!str.match(/^[@#$^&]*$/) 

Kiểm tra xem chuỗi không không chứa chỉ biểu tượng, tức là, nó chứa ít nhất một nhân vật mà isn' t một biểu tượng.

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