정규식 문자 매칭
"자바스크립트 정규식 미니북"을 읽고 정리한 메모입니다.
정규식은 문자와 위치를 일치시킬 수 있는 일치 패턴입니다.
다음은 캐릭터 매칭 상황을 주로 소개하고 있으며, 포지션 매칭 상황도 배우고 있습니다.
두 가지 퍼지 매칭:
1. 수평 퍼지 매칭: 일반 매칭 가능한 문자열의 길이는 고정되어 있지 않습니다. 이를 수행하는 방법은 수량자를 사용하는 것입니다. 예를 들어, {m,n}은 문자가 최소 m회, 최대 n회 연속해서 나타나는 것을 의미합니다.
예를 들어 /ab{2,5}c/는 다음과 같은 문자열 일치를 의미합니다. 첫 번째 문자는 "a"이고 그 다음에는 2~5개의 문자 "b", 마지막으로 문자 "c"가 옵니다.
예: (수동으로 시도해 보고 얻을 결과에 대해 생각해 볼 수 있습니다.)
var regex = /ab{2,5}c/g; var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc"; console.log( string.match(regex) );
g는 전역 일치를 의미하는 수식어입니다. 이는 일치 조건을 충족하는 모든 문자열을 문자열에서 순서대로 찾는 것을 의미합니다.
2. 수직 퍼지 일치: 일반 일치 가능 문자열은 특정 문자에만 적용되며 특정 문자일 필요는 없으며 다양한 가능성을 가질 수 있습니다. 구현 방법은 /a[123]b/와 같은 문자 그룹
을 사용하여 이러한 문자열과 일치시키는 것입니다. 첫 번째 문자는 a이고 두 번째 문자는 '1', '2', '3이 될 수 있습니다. '아무거나, 딱 하나만.
정량자(반복)
1. 일반적인 약어 형식:
(1){m,}은 최소 m번 나타남을 의미합니다.
(2){m}은 m번 나타남을 의미합니다
(3)? {0,1}은 표시되거나 표시되지 않음을 의미합니다.
(4)+ {1,}과 동일하면 적어도 한 번 표시됨을 의미합니다.
(5)* {0,}과 동일은 여러 번 표시됨을 의미합니다. , 나타날 필요는 없으며 여러 번 사용할 수도 있습니다
2. 그리디 매칭과 레이지 매칭
(1) 그리디 매칭: /d{2,5}/는 숫자가 2~5번 나타나는 것을 의미합니다.
var regex = /\d{2,5}/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["123", "1234", "12345", "12345"]
(2) Lazy Match: /d{2,5}?/는 2~5번이면 충분하지만 2번이면 더 이상 시도하지 않는다는 의미입니다. .
var regex = /\d{2,5}?/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]
문자그룹
1. 범위 표현:
(1) 약어를 생략하려면 하이픈 "-"를 사용하세요. 예를 들어 [123456abcdefGHIJKLM]은 [1-6a-fG-M]으로 쓸 수 있습니다.
(2) 참고: 일치하는 문자열에 하이픈이 있는 경우 시작이나 끝에 하이픈을 넣거나 이스케이프하세요.
2. 문자 그룹 제외: 예를 들어 [^abc]
는 특정 문자가 무엇이든 될 수 있지만 a, b 또는 c는 될 수 없음을 의미합니다. ^ 캐럿은 부정을 나타내며 해당 범위 표현도 있습니다. [^abc]
表示某位字符可以是任何东西,但不能是a,b,c。^脱字符表示求反,也有相应的范围表示。
3.常见的简写形式:
(1)d
表示[0-9]
。是一位数字
(2)D
表示[^0-9]
。除数字外的任意字符。
(3)w
表示 [0-9a-zA-Z_]
。数字、大小写字母和下划线。也称单词字符
(4)W
表示[^0-9a-zA-Z_]
。非单词字符
(5)s
表示[ tvnrf]
。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。
(6)S
表示[^ tvnrf]
。非空白字符
(7).
表示[^nru2028u2029]
。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。
要匹配任意字符,可以使用 [dD]
、[wW]
、 和 [^]
中任何的一个。
多选分支
一个模式可以实现横向和纵向模糊匹配,多选分支可以支持多个子模式任选其一。
具体形式:(p1|p2|p3
d
는 [0-9]
를 의미합니다. 한 자리 숫자입니다 (2) D
는 [^0-9]
를 의미합니다. 숫자를 제외한 모든 문자.
(3) w
는 [0-9a-zA-Z_]
를 의미합니다. 숫자, 대문자, 소문자, 밑줄. 단어 문자라고도 합니다
(4) W
는 [^0-9a-zA-Z_]
를 의미합니다. 단어가 아닌 문자
(5) s
는 [tvnrf]
를 의미합니다. 공백, 가로 탭, 세로 탭, 줄 바꿈, 캐리지 리턴 및 폼 피드를 포함한 공백 문자를 나타냅니다. (6) S
는 [^tvnrf]
를 의미합니다. 공백이 아닌 문자
.
는 [^nru2028u2029]
를 의미합니다. 거의 모든 문자를 나타내는 와일드카드 문자입니다. 줄 바꿈, 캐리지 리턴, 줄 구분 기호 및 단락 구분 기호는 예외입니다. 🎜🎜모든 문자를 일치시키려면 [dD]
, [wW]
, 및 [^] 아무거나. 🎜🎜다중 선택 분기🎜🎜A 모드는 수평 및 수직 퍼지 매칭을 달성할 수 있으며 다중 선택 분기는 여러 하위 모드 중 하나를 지원할 수 있습니다. 🎜🎜특정 형식: (p1|p2|p3
) p1, p2, p3은 하위 모드입니다. 🎜🎜다음 문제를 주의 깊게 살펴보시기 바랍니다. 🎜var regex = /good|goodbye/g; var string = "goodbye"; console.log( string.match(regex) );🎜위 예제에서 얻은 결과는 "good"입니다🎜
var regex = /goodbye|good/g; var string = "goodbye"; console.log( string.match(regex) );🎜이 예제에서 얻은 결과는 "goodbye"입니다.🎜🎜🎜브랜치 구조도 게으르다는 결론에 도달했습니다. 일치하면 다음은 더 이상 시도하지 않습니다. 🎜🎜추천 튜토리얼: "🎜JS Tutorial🎜"🎜
위 내용은 JS 정규식 문자 일치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!