이 글에서는 주로 JS 정규식의 핵심 내용을 공유합니다. 이전에 VueJS의 소스 코드를 보고 HtmlParser 부분을 봤기 때문에 이전에 보았던 정규식에 대한 기본 지식이 완전히 부족하다고 느꼈습니다. 블로그 정보를 뒤져보고 JS를 좀 정리해서 여러분과 SF 친구들이 읽기 쉽도록 정규식 중 어려운 부분을 정리했습니다.
반복 매칭을 위해 저희는 정규식의 그룹화 기능을 자주 사용하고, 이를 연습하기 위해 정규 매칭 IP 주소를 사용합니다.
일치시키려는 IP 주소가 0.0.0.0 - 255.255.255.255 사이라고 가정하면 직관적으로 이해할 수 있습니다. 세 자리 + 점을 세 번 일치시킨 다음 세 자리를 한 번 일치시키세요.
여기서 언급된 세 자리 숫자 + 마침표는 우리가 말하는 규칙입니다: d. {1,3}.
, 규칙을 괄호로 묶으면 (d{1,3}.)
그룹이 되므로 IP 주소와 일치하는 정규식은 다음과 같습니다. 작성: (d{1 ,3}.){3}d{1,3}
d{1,3}.
, 当我们把规则用括号包装后, 就变成了组: (d{1,3}.)
, 所以匹配IP地址的正则表达式可以写作: (d{1,3}.){3}d{1,3}
换种思路, 我们也可以这样匹配: d{1,3}(.d{1,3}){3}
拓展: 聪明的你可能已经想到,d{1,3}
匹配是有疏漏的. 在实际生产过程中,d{1,3}
可能匹配999
这种数字, 他是一个错误的IP地址段. 这里贴上真实的IP地址正则匹配供大家参考:((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))
, 另人愉快的是, 它使用的分组策略仍然是不变的.
我们考虑一个很特殊的情况, 当我们要匹配四个IP段相同的情况, 如 100.100.100.100 时, 重复匹配分组的策略失效了: 重复匹配分组 并不能保证匹配相同的数字 -> 这时候我们需要借助 后向引用
策略的力量了(少年, 你渴望力量吗2333, 戳我头像, 带你探索音乐与代码交织的文艺道路.)
后向引用在不同语言的正则表达式书写中, 有不同的语法, 我们讨论JS中最常见的一种, 形如: number
的后向引用, 其中, number
代表分组的序号.
给你一个简单的栗子, 瞬间就记住了, 假使我们要匹配重复的三位数字, 我们将匹配一个数字的规则标记为一个分组: (d)
, 重复匹配这个分组(第一个分组)的具体内容
三次: (d)1
, 这样就达到了目的.
我们很容易将重复匹配和后向引用分别开来: 前者是重复匹配相同的规则, 后者是匹配分组的具体内容.
默认的一些规则需要稍加理解并记住:
위 내용은 JS 정규식 핵심 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!