정규 표현 식 아직 못 해요?어서 이 편 을 봐 라!

9520 단어 정규 표현 식
정규 표현 식 은 많은 프로그래머,심지어 다년간 의 경험 을 가 진 개발 자 들 의 약 한 기능 이다.여러분 들 은 정규 표현 식 이 기억 하기 어렵 고 배우 기 어렵 고 사용 하기 어렵다 고 생각 할 때 가 많 습 니 다.그러나 부정 할 수 없 는 것 은 정규 표현 식 이 매우 중요 한 기능 입 니 다.제 가 정규 표현 식 을 배우 고 사용 할 때의 관건 을 다음 과 같이 정리 하여 참고 하 겠 습 니 다.
서로 다른 언어의 정규 표현 식 문법 에 약간의 차이 가 있 으 므 로 본 고 는 자바 script 중의 문법 을 사용 할 것 입 니 다.
무엇이 정규 표현 식 입 니까?
정규 표현 식(Regular Expression 또는 Regex)은 특정한 검색 모드 를 정의 하 는 문자 조합 입 니 다.정규 표현 식 은 텍스트 에 있 는 문 자 를 일치 시 키 고 찾 고 교체 하 며 데 이 터 를 입력 하 는 검증 을 하고 영어 단어의 맞 춤 법 오류 등 을 찾 을 수 있 습 니 다.
디 버 깅 도구
다음은 몇 가지 우수한 온라인 디 버 깅 도 구 를 보 여 줍 니 다.정규 표현 식 을 만 들 거나 디 버 깅 하려 면 필요 할 수 있 습 니 다.개인 적 으로 선 호Regex101,regex 101 은 정규 표현 식 의 서로 다른 flavor 사이 에서 정규 표현 식 을 전환 하고 해석 하 며 일치 하 는 정 보 를 표시 하고 자주 사용 하 는 문법 참 고 를 제공 하 는 등 기능 을 지원 합 니 다.매우 강력 합 니 다.
Regex101

Regexr

Regexpal

시작 하 다
자 바스 크 립 트 에서 정규 표현 식 은/으로 시작 하고 끝 나 므 로/hello regexp/까지 간단 하면 정규 표현 식 입 니 다.
플래그(표지 부 또는 수정자)
Flags 는 끝/을 쓴 후에 전체 정규 표현 식 의 일치 행위 에 영향 을 줄 수 있 습 니 다.흔히 볼 수 있 는 flags 는:g:전역 일치(global);정규 표현 식 은 기본적으로 첫 번 째 일치 결과 만 되 돌려 줍 니 다.플래그g를 사용 하면 모든 일치i를 되 돌려 줍 니 다.대소 문자 무시(case-insensitive);일치 할 때 영문 자모의 대소 문자 무시m:여러 줄 일치(multiline);시작 과 끝 문자(^와$)를 여러 줄 에서 작업 하 는 것 으로 간주 합 니 다.즉,모든 입력 문자열 의 시작 과 끝 만 일치 하 는 것 이 아니 라
또는\r분할 의 시작 과 끝 입 니 다.
Flags 는 다음 과 같이 조합 해서 사용 할 수 있 습 니 다.

문자 세트(문자 집합)
문자 집합 에 있 는 임의의 문자 와 일치 합 니 다.일반적인 문자 집합 은 다음 과 같 습 니 다.[xyz]:일치"x"또는"y"``"z"[^xyz]:보충,일치"x" "y" "z"의 다른 문자[a-z]:일치"a"에서"z"까지 의 임 의 문자[^a-n]:보충,일치 제"a"부터"n"까지 의 다른 문자[A-Z]:일치 하 는"A"부터"Z"까지 의 임 의 문자[0-9]:일치 하 는"0"부터"9"까지 의 임 의 숫자
예 를 들 어 모든 자모 와 숫자 가 일치 하면 다음 과 같이 쓸 수 있다./[a-zA-Z0-9]/또는/[a-z0-9]/i.
Quantifiers(양사)
실제 사용 에서 우 리 는 항상 같은 유형의 문 자 를 여러 번 일치 시 켜 야 한다.예 를 들 어 11 자리 와 일치 하 는 핸드폰 번 호 를 우 리 는[0-9]을 11 번 쓸 수 없다.이때 우 리 는 Quantifiers 를 사용 하여 중복 매 칭 을 실현 할 수 있다.{n}:매 칭n{n,m}:매 칭n-m{n,}:매 칭>=n?:매 칭0 || 1*:매 칭>=0회,등가{0,}+:매 칭>=1회,등가{1,}\d메타 문자(메타 문자)
정규 표현 식 에 서 는 원 문자 라 고 불 리 는 특수 한 의 미 를 가 진 자모 가 있 습 니 다.쉽게 말 하면 원 문 자 는 문 자 를 묘사 하 는 문자 입 니 다.문자 표현 식 의 내용,변환 과 각종 조작 정 보 를 설명 하 는 데 사 용 됩 니 다.
일반적인 메타 문 자 는 다음 과 같 습 니 다:[0-9]:임 의 숫자 와 일치 하고 등가\D\d:임 의 비 숫자 문자 와 일치 합 니 다.\w의 보충 집합[A-Za-z0-9_]:임의의 기본 라틴 자모표 의 자모 와 숫자,그리고 밑줄 이 일치 합 니 다.등가\W\w:임의의 비 기본 라틴 자모표 의 자모 와 숫자,그리고 밑줄 을 매 칭 합 니 다.\s의 보충 집합\S:공백 문자 와 일치 합 니 다.빈 칸,탭 문자,페이지 바 꾸 기 문자,줄 바 꾸 기 문자 와 다른 유 니 코드 빈 칸\s을 포함 합 니 다.비 공백 문자 와 일치 합 니 다.\b의 보충 집합/\bno/:한 글자 와 빈 칸 사이 의 0 너비 단어 경계 와 일치 합 니 다.예 를 들 어"at noon"매 칭"no"중의/ly\b/,"possibly yesterday."매 칭"ly"중의\B/\Bon/:0 너비 비 단어 경계,예 를 들 어 두 글자 사이 또는 두 빈 칸 사이 에 일치 합 니 다.예 를 들 어"at noon"매 칭"on"중의/ye\B/,"possibly yesterday."매 칭"ye"중의\t
:수평 탭(tab)\r과 일치 합 니 다.줄 바 꿈(new line)?과 일치 합 니 다.리 턴 문자(carriage return)와 일치 합 니 다.
특수 문자(특수 문자)
정규 에 일부 특수 문자 가 존재 하 는데 그들 은 글자 의 뜻 에 따라 일치 하지 않 고 특수 한 의 미 를 가진다.예 를 들 어 앞에서 양사 에 사용 한*,+,\등 이다.다른 일반적인 특수 문 자 는 다음 과 같 습 니 다:\w:전의 문 자 는 일반 문 자 를 특수 문자 로 바 꿀 수 있 습 니 다.예 를 들 어\+;특수 문 자 를 글자 의 의미 로 바 꿀 수도 있다.예 를 들 어"+"매 칭.
:임의의 단일 문자 와 일치 하지만 줄 바 꿈 부 호 는 다음 과 같다.\r,\u2028또는\u2029.문자 집중[.]에 서 는 특별한 의미 가 없습니다.즉,'.'의 글자 의미|:문자 교체(alternate character),일치|전 또는 후의 표현 식 입 니 다.예 를 들 어"bear""pear"를 동시에 일치 시 켜 야 하 며/(b|p)ear/또는/bear|pear/를 사용 할 수 있다.그러나/b|pear/을 사용 할 수 없습니다.이 표현 식 은"b""pear"^만 일치 합 니 다.입력 의 시작 과 일치 합 니 다.예 를 들 어/^A/"an Apple"중의"A"와 일치 하지 않 지만"An apple"중의"A"$와 일치 하지 않 습 니 다.입력 의 끝 에 일치 합 니 다.예 를 들 어/t$/"eater"중의"t"와 일치 하지 않 지만"eat"중의"t"와 일치 하지 않 는 다.^$는 폼 검증 을 할 때 자주 사용 해 야 합 니 다.입력 의 한 단락 이 아 닌 처음부터 끝까지 완전한 입력 을 검증 해 야 하기 때 문 입 니 다.
Groups(그룹)(xyz):그룹 캡 처(Capturing Group),일치 하 는 항목 을 캡 처 하고 캡 처 합 니 다.예 를 들 어/(foo)/일치 하고 포획"foo bar."중의"foo".일치 하 는 하위 문자열 은 결과 배열 의 요소[1],[n]에서 찾 거나 정 의 된 RegExp 대상 의 속성$1,...$9 에서 찾 을 수 있 습 니 다(?:xyz):비 캡 처 그룹(Non-capturing Group)은 일치 하지만 일치 하 는 항목 을 캡 처 하지 않 습 니 다.일치 하 는 항목 은 다시 접근 할 수 없습니다
:n는 정수 입 니 다.역방향 참조(back reference)를 표시 합 니 다.정규 표현 식 의 n 번 째 괄호(왼쪽 부터 수)에서 일치 하 는 하위 문자열 을 가리 킵 니 다.예 를 들 어/apple(,)\sorange\1/일치"apple, orange, cherry, peach."중의"apple,orange,"Assertion(단언)x(?=y):따 르 는y만 일치 합 니 다.예 를 들 어x,/bruce(?=wayne)/뒤 를 따 르 면"bruce"일치 합 니 다.wayne,/bruce(?=wayne|banner)/뒤에"bruce"또는"wayne"를 따 르 면 일치 합 니 다.그러나banner"wayne"는 일치 하 는 결과 에 나타 나 지 않 습 니 다"banner":일치 하지 않 는x(?!y)만 따 르 지 않 습 니 다y.예 를 들 어x는 따 르 지 않 는 숫자 만 일치 합 니 다.
/\d+(?!\.)/.exec('3.141')`    `"141"`,    `"3.141"
마지막 으로Fundebug사용 하기 좋 은 BUG 모니터링 도 구 를 추천 합 니 다~
활용 단어 참조
위 에 이렇게 많은 정규 표현 식 의 문법 과 규칙 이 나열 되 어 있 으 며,어느 정도 정규 표현 식 의 역할 을 분석 하고 이해 하 는 데 도움 을 줄 수 있 습 니 다.그러나 이러한 규칙 그룹 을 어떻게 통합 하여 특정한 역할 을 하 는 표현 식 을 만 드 는 지 는 우리 스스로 연습 을 많이 해 야 합 니 다.아래 몇 가지 예 를 들 어 이러한 규칙 을 활용 하 는 지 설명 합 니 다.
1.휴대폰 번호 매 칭
우 리 는 먼저 비교적 간단 한 휴대 전화 번호 매 칭 부터 시작한다.현재 국내 휴대 전화 번 호 는/\d+(?!\.)/로 시작 하 는 11 자리 숫자 이기 때문에 휴대 전화 번호 의 정칙 은 다음 과 같은 몇 부분 으로 나 눌 수 있다."."로 시작 합 니 다.1(3/4/5/7/8)2 위 는1중의 하나 입 니 다./^1/또는3、4、5、7、8나머지 3-11 위 는 모두 숫자 이 고 숫자 로 끝 납 니 다./[34578]/조합 하면/(3|4|5|7|8)/또는/\d{9}$/로 캡 처 괄호 를 사용 하면 성능 손실 이 있 기 때문에 첫 번 째 쓰기 방법 을 추천 합 니 다.
2.이메일 일치
표준 이메일 구성/^1[34578]\d{9}$/,
각 부분의 격식 기준 은 다음 과 같다.
yourname:임의의 영문 자모(a-z/A-Z),숫자(0-9),밑줄(),영문 문장(.),연결 문자(-),길이 가 0 domain 보다 큽 니 다.임의의 영문 자모(a-z/A-Z),숫자(0-9),연결 문자(-),길이 가 0 extension 보다 큽 니 다.임의의 영문 자모(a-z/A-Z),길이 2-8 optional-extension:/^1(3|4|5|7|8)\d{9}$/로 시작 하고 뒤에 임의의 영문 자모(a-z/A-Z),길이 2-8,선택 할 수 있 습 니 다.
각 부분의 정규 표현 식 은:
yourname: <yourname>@<domain>.<extension><optional-extension> domain: "." extension: /[a-z\d._-]+/ optional-extension: /[a-z\d-]+/조합 하여 마지막 정규 표현 식 을 만 듭 니 다./[a-z]{2,8}/;가 독성 을 높이 기 위해 각 부분 을/(\.[a-z]{2,8})?/로 싸 고 시작 과 끝 문자/^([a-z\d._-]+)@([a-z\d-]+)\.([a-z]{2,8})(\.[a-z]{2,8})?$/를 잊 지 마 세 요.
결어
오늘 정규 표현 식 의 보급 은 여기까지 입 니 다.여러분 들 이 나중에 정규 표현 식 을 쓰 는 데 도움 이 되 기 를 바 랍 니 다.본 논문 에서 언급 되 지 않 은 지식 에 대해 다음 과 같은 링크 를 참고 할 수 있다.
Wikipedia - Regular Expression MDN - Regular Expression Microsoft - Regular Expression Reference W3schools - Regexp
자,본문 은 여기까지 소개 하 겠 습 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기