"先行断言"指的是,x只有在y前面才匹配,必须写成/x(?=y)/的形式。比如,只匹配百分号之前的数字,要写成/\d+(?=%)/。
"先行否定断言"指的是,x只有不在y前面才匹配,必须写成/x(?!y)/的形式。比如只匹配不在百分号之前的数字,要写成/\d+(?!%)/。
//先行断言括号之中的部分(?=%)是不计入返回结果的。
/\d+(?=%)/.exec('100% of US presidents have been male')//["100"]
/\d+(?!%)/.exec('it is worth about ¥90')//["90"]
"后行断言"整好与"先行断言"相反,x只有在y后面才匹配,必须写成/(?<=y)x/的形式,比如只匹配$符号之后的数字,要写成/(?<=$)\d+/。"后行否定断言"则与"先行否定断言"相反,x只有不在y后面才匹配,必须写成/(?<!y)x/的形式。比如只匹配不在$符号后面的数字,要写成/(?<!$)\d+/。
//"后行断言"括号中的部分(?<=\$)也是不计入返回的结果
/(?=\$)\d+/.exec