텍스트 입력을 신용 카드 번호로 확인해야합니다.2 개의 정규 표현식을 논리 또는 "결합"할 수 있습니까?
- 비자 :
^4[0-9]{12}(?:[0-9]{3})?$
- 마스터 :
^([51|52|53|54|55]{2})([0-9]{14})$
- 아메리칸 익스프레스 :
^3[47][0-9]{13}$
및 많은 다른 사람 나는 이미 다른 신용 카드에 대한 정규식이있다.
문제는 다른 사용자를 기반으로 다른 정규식을 사용하여 유효성을 검사하고 싶습니다. 예 : user1의 경우 Visa 및 Mastercard를 사용할 수 있으며 user2의 경우 Visa 및 American Express를 사용할 수 있습니다.
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
이 할 수있는 방법이 있나요 : 그래서 내가 좋아하는, 위의 하나 이상의 정규식 문자열을 결합하여 동적으로 최종 정규식 문자열을 생성 하시겠습니까? 고마워,
+1 작동합니다 :)'('와 함께 작동 :? foo는 | bar)의'논리적 또는 문자열로 | multiple chars characters – n611x007
나는 이것을 시험해 보았고, 'Visaregex'는 얇게 썰어 야합니다. 그렇지 않으면 슬래시가 문자 그대로 조합에 포함될 것입니다. 즉'Visaregex ==/ab + c /'와'Mastercardregex ==/de + f /'인 경우'user1Regex'는'/ (\/ab + c \ /) | (\/de + 우리가 원했던 것처럼'/ (ab + c) | (de + f) /'가 아닙니다. 그래서 나는 당신의 대답을 다음과 같이 바꿀 것이다 : let let user1Regex = new RegExp ($ {Visaregex.toString(). slice (1, -1)}) | ($ {Mastercardregex.toString(). slice (1, - 1)}) \');'. – chharvey