Tôi cần xác thực tính năng Nhập văn bản làm số thẻ tín dụng. Tôi đã có regex cho thẻ tín dụng khác nhau:Tôi có thể "kết hợp" 2 regex với một logic hay không?
- Visa:
^4[0-9]{12}(?:[0-9]{3})?$
- Mastercard:
^([51|52|53|54|55]{2})([0-9]{14})$
- American Express:
^3[47][0-9]{13}$
và nhiều người khác.
Vấn đề là, tôi muốn xác thực bằng cách sử dụng regex khác nhau dựa trên những người dùng khác nhau. Ví dụ: Đối với user1, Visa và Mastercard có sẵn, trong khi đối với user2, Visa và American Express có sẵn. Vì vậy, tôi muốn tạo một chuỗi regex cuối cùng động, kết hợp một hoặc nhiều chuỗi regex ở trên, như:
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
Có cách nào để làm điều đó không? Cảm ơn,
1 cho '(:) 'mà làm việc với' (:? foo | thanh) 'cho logic hoặc với chuỗi | nhiều ký tự ký tự – n611x007
Tôi đã thử nghiệm điều này và 'Visaregex' cần được cắt bớt hoặc các dấu gạch chéo khác sẽ được đưa vào nghĩa đen thành kết hợp. nói cách khác, nếu 'Visaregex ==/ab + c /' và 'Mastercardregex ==/de + f /' thì 'user1Regex' sẽ kết thúc bằng'/(\/ab + c \ /) | (\/de + f \ /)/', không phải'/(ab + c) | (de + f)/'như chúng ta muốn. Vì vậy, tôi sẽ thay đổi câu trả lời của bạn thành: 'let user1Regex = new RegExp (\' ($ {Visaregex.toString(). Slice (1, -1)}) | ($ {Mastercardregex.toString(). Slice (1, - 1)}) \ ');'. – chharvey