javascript 허용 글자 만 반환하는 자바 스크립트 정규식




정규식 특정 문자 사이 (4)

내 문자열은 앞으로도 A01, B02, C03, 아마도 AA18과 같은 것이 될 수 있습니다. 나는 정규식을 사용하여 글자를 얻었고 정규식에서 그다지 익숙하지 않았기 때문에 작업 할 수 있다고 생각했습니다. 나는이 함수를 썼다 :

function rowOffset(sequence) {
              console.log(sequence);
            var matches = /^[a-zA-Z]+$/.exec(sequence);
            console.log(matches);
            var letter = matches[0].toUpperCase();
            return letter;
}

var x = "A01";
console.log(rowOffset(x));

matches 는 계속 null입니다. 이 일을 제대로하고 있습니까? 이 게시물을 살펴보면 정규식이 맞다고 생각했습니다. 문자 az, AZ만의 정규식


당신은 이것을 할 수 있습니다 :

var r = 'AA18'.replace(/[\W\d_]/g, ''); // AA

String#replace 를 사용하여 입력 문자열에서 모든 비 문자를 제거 할 수 있습니다.

var r = 'AA18'.replace(/[^a-zA-Z]+/g, '');
//=> "AA"

주요 문제는 정규식 패턴에서 ^$ 문자를 사용하는 것입니다. ^ 는 문자열의 시작을 나타내고 $ 는 끝을 나타냅니다. 따라서 패턴은 문자열의 처음부터 끝까지 하나 이상의 문자로 구성된 그룹 찾는 문자열을 찾습니다.

또한 글자의 각 인스턴스를 가져 오려면 정규식 패턴의 끝에 "global"표시기 ( g )를 포함 /[a-zA-Z]+/g . /[a-zA-Z]+/g . 그것을 밖으로 내버려 두는 것은 패턴의 첫 번째 인스턴스를 찾은 다음 검색을 중지한다는 것을 의미합니다. . . 그것을 추가하면 모든 인스턴스와 일치합니다.

이 두 가지 업데이트는 당신을 끌어 들여야합니다.

편집하다:

또한, exec() 대신 match() 를 사용할 수도 있습니다. 여러 값의 문자열 (예 : "A01, B02, C03, AA18" )이있는 경우 match() 는 모든 배열을 반환하지만 exec() 는 첫 번째 것과 만 일치합니다. 값이 하나뿐이라면 exec() 가 좋을 것입니다 (그리고 "global"플래그는 필요 없습니다).

match() 를 사용하려면 코드 순서를 다음과 같이 약간 변경해야합니다.

var matches = sequence.match(/[a-zA-Z]+/g);

다른 질문의 목표가 무엇인지 혼란스러워합니다. 자신의 끈에 문자 있다는 것을 확인하고 싶었습니다.

문자열의 처음과 끝에 각각 일치하는 ^$ 앵커를 제거해야합니다.

[a-zA-Z]+

이것은 입력 문자열의 첫 문자와 일치합니다.

더 많은 정보가있을 경우 (즉, 단일 문자열에 여러 개의 일치 항목이 필요한 경우)

sequence.match(/[a-zA-Z]+/g)






regex