5

tôi muốn xác nhận trường văn bản của tôi với bên dưới:
1. alpha-số
2. Và tất cả ký tự đặc biệt
tôi không tốt trong regex bất cứ ai có thể giúp tôi ra tạo ra một regex cho những thứ trên.Validating Alpha-Numeric với tất cả các kí tự đặc biệt

+0

xấu, không đọc nhiệm vụ ion chính xác. Bạn có muốn các bộ lọc khác nhau cho các ký tự chữ và số và không phải chữ số-alpha không? –

Trả lời

6

Strings chữ và số được kết hợp như thế này:

^[a-zA-Z0-9]+$ 

Nó phù hợp với bất kỳ chuỗi mà chỉ chứa các ký tự được niêm yết và ít nhất một char dài.

Với ký tự đặc biệt, nó sẽ hoạt động theo cùng một cách.

Nhưng bạn nghĩ gì là một char đặc biệt?

Đối @ # $%^& *() + = - [] \ ';,/{} | ":!.? <> - là tập hợp các ký tự đặc biệt, các regex sẽ trông như thế này:

^[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+$ 

một lần nữa, tất cả các ký tự được phép được liệt kê. những người sử dụng trong vòng regexes như lệnh hoặc quantifiers phải trốn thoát với một \.

+0

đây có thể là danh sách các ký tự đặc biệt. ! @ # $%^& *() + = - [] \ ';,./{} | ": <>? – Abbas

+0

xem chỉnh sửa ở trên. –

+0

bạn có thể hợp nhất các ký tự chữ và số trong một regex, tôi đã thử điều này (/^[a-zA-Z_0-9 @! # \ $ \ ^% & *() + = \ - \ [\] \\\ ';, \. \/\ {\} \ | \ ": <> \?] + $ /) nhưng không hoạt động ... – Abbas

3

này sẽ làm những gì bạn muốn.

function validate() 
{ 
     var val = <my string>; 

     if (val == '') 
      alert('String is empty!'); 

     else if (!val.match(/[_\W]/)) 
      alert('String contains only A-Z a-z 0-9 characters!'); 

     else if (!val.match(/^\w[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]/)) 
      alert('String contains your predefined characters only!'); 
} 

Lưu ý rằng cả hai regex đều hoạt động trên hai lần phủ định, trả về false trong lần khớp đầu tiên của một ký tự bất hợp pháp để có hiệu suất tốt nhất. Đầu tiên là từ chối của bộ ký tự \W, đó là từ chối của \w. Thứ hai là số phủ định ! của số phủ định ^ của các ký tự được xác định trước (\w + ký tự được xác định trước). Trả lời nếu bạn muốn bất kỳ lời giải thích hoặc sửa đổi nào.

EDIT Dưới đây là regex để khớp nếu chuỗi có ít nhất một ký tự đặc biệt và ký tự chữ và số.

if (val.match(/[^_\W]/) && val.match(/[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]/)) 
    alert('String contains both alpha-numeric and your pre-defined special characters!'); 

Có ổn không hoặc bạn cần nó trong một mẫu regex duy nhất?

EDIT này sẽ làm điều đó trong một regex duy nhất:

if (val.match(/(?=.*[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+?).*[^_\W]+?.*/) 
    alert('String contains both alpha-numeric and your pre-defined special characters!'); 
+0

cảm ơn một điều tuyệt vời, nhưng tôi có thể nhận được trong regex đơn, điều gì sẽ xảy ra nếu tôi kiểm tra đầu tiên cho ký tự chữ và số và sau đó, nếu trường có chứa ký tự đặc biệt thì nó không vượt qua bài kiểm tra chữ và số và điều kiện khác, tôi muốn một trường cần có ký tự chữ số và ký tự đặc biệt. Ít nhất một ký tự đặc biệt, nếu không nó sẽ gửi thông báo – Abbas

+0

OK, hãy để tôi xem, vì vậy bạn muốn có một regex để kiểm tra xem chuỗi của bạn có ít nhất 1 ký tự alpha-số không ter và ít nhất 1 ký tự không phải chữ số-alpha? –

+0

không hoạt động với giới hạn ký tự chữ và số và ký tự đặc biệt, tôi đã thử - aabb # không được phép –

1

Bạn có thể thử điều này cho tất cả các ký tự đặc biệt

/^[0-9a-zA-Z\s\r\[email protected]!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]+$/; 
0

Nếu muốn cho phép ký tự đặc biệt cụ thể với chử thường sau đó sau regexp sẽ làm việc. Bạn có thể tùy chỉnh, cho phép các ký tự đặc biệt phạm vi theo yêu cầu của bạn.Trong trường hợp của các ký tự thoát bạn cần phải đặt ở giữa \ \. Trong ví dụ dưới đây \ - \ allow '-'.

/^[a-zA-Z0-9?=.*[email protected]#$%^&*_\-\s]+$/ 

Hy vọng điều này sẽ giúp bạn :).

0

Đối với các chữ và số và tất cả các nhân vật Validation đặc biệt

bạn có thể sử dụng trong một regex

này sẽ trở thành sự thật nếu bạn có tối thiểu 8 ký tự ít nhất 1 viết hoa chữ cái, 1 Chữ thường Alphabet, 1 số và 1 ký tự đặc biệt

NSString *alphaNumberandSpecialRegex [email protected]"^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#[email protected]$%^&*-]).{8,}$"; 
     NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex]; 

     return [alphaNumberTest evaluateWithObject:@"yourString"]; 

tối thiểu 8 ký tự ít nhất 1 Alphabet và 1 Số:

NSString *alphaNumberandSpecialRegex [email protected]""^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$""; 
      NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex]; 

      return [alphaNumberTest evaluateWithObject:@"yourString"]; 

tối thiểu 8 ký tự ít nhất 1 Alphabet, 1 số và 1 nhân vật đặc biệt:

NSString *alphaNumberandSpecialRegex [email protected]"^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$"; 
       NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex]; 

       return [alphaNumberTest evaluateWithObject:@"yourString"]; 

tối thiểu 8 ký tự ít nhất 1 viết hoa chữ cái, 1 Chữ thường Alphabet và 1 Số:

NSString *alphaNumberandSpecialRegex [email protected]"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"; 
        NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex]; 

        return [alphaNumberTest evaluateWithObject:@"yourString"]; 

tối thiểu 8 và Tối đa 10 ký tự ít nhất 1 chữ cái viết hoa, 1 chữ thường chữ thường, 1 số và 1 ký tự đặc biệt:

NSString *alphaNumberandSpecialRegex [email protected]"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,10}"; 
         NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex]; 

         return [alphaNumberTest evaluateWithObject:@"yourString"]; 
Các vấn đề liên quan