정규 표현 식 아직 못 해요?어서 이 편 을 봐 라!
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
자,본문 은 여기까지 소개 하 겠 습 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.