摘要:零宽断言一般的正则表达式匹配,都是有宽度的,如。零宽度正先行断言仅当子表达式在此位置的右侧匹配时才继续匹配。文档对象方法方法用于检索字符串中的正则表达式的匹配,返回一个数组,其中存放匹配的结果。
正则表达式
MDN文档
名词解析1. 断言
断言,就是指明某个字符串前边或者后边,将会出现满足某种规律的字符串。
零宽断言:一般的正则表达式匹配,都是有 宽度 的,如:w+。 会将 "。" 一同匹配到。如果像 "。" 这样的内容只是一种判断条件,即不想被正则匹配到,就要使用到 零宽断言了。
(?=X)零宽度正先行断言:仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,w+(?=d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。 目前JS只支持先行断言,后发断言还不支持。不过目前chrome支持了后发断言。 2. 分组 分组的类型(四种): 捕获型 - () 非捕获型 - (?:) 正向前瞻型 - (?=) 反向前瞻型 - (?!) 其中只有捕获型分组会暂存匹配到的串。 一个分组中可以写多个表达式:(表达式1|表达式2|表达式3), 表示匹配其中任意一个表达式。 3. 捕获与引用 1) 嵌套分组的捕获: 规则是以左括号出现的顺序进行捕获
(?!X)零宽度负先行断言:仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,w+(?!d) 与后不跟数字的单词匹配,而不与该数字匹配 。
(?<=X)零宽度正后发断言:仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(?:仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?
分组可以通过将某些表达式组合成整体,这样可以简化表达式的书写。例如将/testtesttest/写为/(test){3}/
var reg = /((kid) is (a (doubi)))/
var str = "kid is a doubi"
reg.test( str ) // true
console.log(RegExp.$1) // kid is a doubi
console.log(RegExp.$2) // kid
console.log(RegExp.$3) // a doubi
console.log(RegExp.$4) // doubi
通过 $1 可以引用捕获的字符串
2) replace中捕获的使用:
3) 反向引用
正则表达式里也能进行引用,这称为反向引用:
var reg = /(w{3}) is 1/reg.test("kid is kid") // true
reg.test("dik is dik") // true
reg.test("kid is dik") // false
reg.test("dik is kid") // false
1引用了第一个被分组所捕获的串,换言之,表达式是动态决定的。
注意,如果编号越界了,则会被当成普通的表达式:
var reg = /(w{3}) is 6/;reg.test( "kid is kid" ); // false
reg.test( "kid is 6" ); // true
3. 字符集合
通常字符集合有由[]方括号括起来。
exec、test、match、replace
segmentfault文章
replace默认只替换第一个匹配到的字符串。
mdn文档RegExp对象
JavaScript exec() 方法
RegExpObject.exec(string)
exec() 方法用于检索字符串中的正则表达式的匹配,返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null;
情况 1)RegExp为非全局正则表达式;
情况 2)RegExp为全局正则表达式,exec()可以像迭代器那样,多次调用,获得匹配值;
JavaScript test() 方法
RegExpObject.test(string)
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false
String.prototype.replace()方法
W3 replace方法
MDN replace方法
更多博客:https://github.com/Lmagic16/blog
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98167.html
摘要:正则表达式一直是里比较难以掌握的点。在中创建正则的两种方式使用字面量这就是正则表达式的字面量语法,表示正则表达式的模式,为正则表达式的标志。字面量形式的正则表达式一般使用较多,也推荐大家尽可能使用这种形式,简洁易读,符合正常的使用习惯。 正则表达式一直是js里比较难以掌握的点。 看不懂,学不会,记不住。 每次需要用到正则的时候,都需要再去查找资料。 今天花时间把正则的知识点总结下,希望...
摘要:选择分组和引用正则表达式的语法还包括指定选择项子表达式分组和引用前一子表达式的特殊字符。带圆括号的表达式的另一个用途是允许在同一正则表达式的后部引用前面的子表达式。 正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的 RegExp类 表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进 行强大的模式匹配和文本检索与...
阅读 730·2023-04-25 16:55
阅读 2784·2021-10-11 10:59
阅读 2051·2021-09-09 11:38
阅读 1757·2021-09-03 10:40
阅读 1466·2019-08-30 15:52
阅读 1075·2019-08-30 15:52
阅读 917·2019-08-29 15:33
阅读 3434·2019-08-29 11:26