주어진 숫자가 x 번 발생하는지 확인하는 정규식을 작성할 수 있습니까?
다음 코드를 사용하여 주어진 문자열 (16 자리)에 적어도 하나 이상의 숫자가 있는지 확인하려고합니다. 예를 들어 16 번의 숫자가 하나만있는 경우 두 개의 다른 숫자가있을 수 없습니다.
let multipleDigits = /[0-9]{16}/g.test(ccString);
console.log('More than one digit? ' + result);
전체 기능은 다음과 같습니다.
function validator(ccNumber) {
let ccString = ccNumber.toString();
호출 및 출력은 다음과 같습니다.
validator(1111111111111112);
More than one digit? false
예상 출력은 'true'입니다. 어떤 도움이나 안내를 주시면 감사하겠습니다.
감사합니다
추신 내가 시도하는 정규식의 또 다른 변형은 다음과 같습니다.
let testOnlyOneDigit = /\d{16}/g;
문자열 의 시작 부분을 캡처하고 문자열 끝에 도달 할 때까지 해당 캡처 그룹을 역 참조 하여 문자열에 단일 숫자 만 포함되어 있는지 테스트 \d
합니다. 그런 다음 해당 테스트를 부정하여 문자열에 다른 숫자가 있는지 확인합니다.
const hasMoreThanOneDigit = num => !/^(\d)\1*$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));
입력이 숫자라고 믿을 수없고이를 검증해야하는 경우 ( "최소한 두 개의 다른 숫자를 포함하는 숫자 문자열") 테스트는 좀 더 복잡해야합니다. 일치 및 숫자를 캡처 한 다음 더 많은 숫자를 일치시키고 결국에는 음수 미리보기를 삽입하여 캡처 된 숫자와 동일하지 않은 숫자를 일치시킵니다.
const hasMoreThanOneDigit = num => /^(\d)\d*(?!\1)\d+$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));
console.log(hasMoreThanOneDigit('111111AAA1111111'));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다