정규 표현 식 이나 일치 - [] 과 | (우선 일치)

선언: 알고리즘 문 제 를 풀 때 문자열 에 대해 서 는 항상 정규 표현 식 으로 처리 하 는 것 에 익숙 합 니 다.그 중 하 나 는 11, 1, 2 와 일치 하 는 것 이다.그들 을 교체 했다.그래서 이 잡기 가 생 겼 다.본 고 는 주로 replace 함수 에 관 한 것 이다.정규 표현 식 의 [] 와 | 설명.만약 관리 가 흥미 가 있다 면 계속 아래 를 내 려 다 보 세 요.
질문
이 문 제 를 보고 첫 번 째 반응 에 적 힌 코드 는 다음 과 같다.
let str = "1111111111111111111112"
//     
let reg  = /[11 1 2]/g
//  replace  
str.replace(reg, function(match){
	//  
})

상기 코드 에서 11 과 영원히 일치 하지 않 고 1 과 2 만 일치 하 는 것 을 발견 할 수 있 습 니 다.정규 표현 식 에서 [] 괄호 에 있 는 요 소 를 생각 했 는데 우선 순위 가 없 기 때문에 1 이 1 과 일치 하고 11 이 영원히 1 로 차단 되 었 습 니 다.
그러면 어떻게 하면 11 의 우선 순 위 를 1 의 앞 에 올 릴 수 있 을까요?
이리 저리 생각 하 다가 마침내 "|" 이라는 것 이나 조작 부호 가 생각 났 다.우선, | [] 와 같은 것 은, 모두 또는 조작 부호, 모두 일치 합 니 다.분명 다른 점 이 있 을 거 라 고 생각 합 니 다. 그래서 대담 한 테스트 를 통 해 1 판 문 제 는 마침내 해결 되 었 습 니 다. |앞 에 놓 인 요소 와 일치 합 니 다.
(여기 서 한 가지 문제 가 있 습 니 다. 예전 에 [] 를 잘 이해 하지 못 한 원인 으로 인해 발생 한 것 입 니 다. 바로 [11, 12] 일치 하 는 것 은 1 과 빈 칸 에 두 세 글자 가 있 습 니 다)
제2판 코드
let str = "1111111111111111111112"
//     
let reg  = /11|1|2/g
//  replace  
str.replace(reg, function(match){
	//  
	console.log(match)//   11   11,     1
})

좋은 웹페이지 즐겨찾기