📅  最后修改于: 2023-12-03 15:40:38.550000             🧑  作者: Mango
在正则表达式中,否定指的是匹配某些模式除外的情况。Javascript正则表达式提供了几种方式来实现否定匹配。
否定字符组是指用^
符号在字符组内表示除了其中给定的字符以外的任何字符。例如,[^abc]
表示不匹配a、b或c中的任何一个字符。
const str = 'ab1cd2ef3gh4';
const regex = /[^0-9]/g;
const result = str.match(regex);
console.log(result); // ["a", "b", "c", "d", "e", "f", "g", "h"]
否定环视是指匹配不满足给定模式的位置。?!
在环视中表示否定预测先行断言,即紧接在该位置后不匹配给定模式,才会匹配该位置。
const str = 'abc123def456';
const regex = /\d+(?!456)/g;
const result = str.match(regex);
console.log(result); // ["123"]
否定捕获是指匹配包含不满足给定模式的位置,但只返回外层捕获的部分。(?!)
表示否定预测先行断言,即紧接在该位置后不匹配给定模式,才会匹配外层的捕获分组。
const str = 'abc123def456';
const regex = /(abc)(?!\d+)/g;
const result = str.match(regex);
console.log(result); // ["abc"]
以上是Javascript中实现否定匹配的几种方式,能很好地帮助程序员根据需要过滤匹配结果。