您的位置:

正则表达式非贪婪匹配

一、正则表达式里非贪婪模式

正则表达式里非贪婪模式就是在匹配字符串时,尽可能少地匹配字符。在正则表达式中,非贪婪模式可以通过在量词后面加上问号“?”来实现。

const str = "hello world";
const reg = /l.*?o/; // 等价于 /l.*o?/
const result = str.match(reg);
console.log(result); // ["lo"]

上面代码中,正则表达式 /l.*?o/ 是非贪婪模式,它在匹配字符串 "hello world" 时,尽可能少地匹配字符。

二、正则表达式中表达非贪婪匹配

正则表达式中表达非贪婪匹配,可以通过在量词后面加上问号“?”来达到非贪婪匹配的效果。在实际应用中,非贪婪模式通常会配合其他正则表达式元字符或者组合使用。

比如要匹配字符串 "a1b2c3d4" 中的数字,可以使用如下正则表达式:

const str = "a1b2c3d4";
const reg = /\d+?/;
const result = str.match(reg);
console.log(result); // ["1"]

上面代码中,正则表达式 /\d+?/ 是贪婪模式,它在匹配字符串 "a1b2c3d4" 时,尽可能少地匹配数字。

三、如何表示非贪婪匹配

表示非贪婪匹配,可以通过在量词后面加上问号“?”来达到非贪婪匹配的效果。

非贪婪模式和贪婪模式的区别在于,非贪婪模式尽可能少地匹配字符,而贪婪模式尽可能多地匹配字符。

四、正则表达式的非贪婪匹配

正则表达式的非贪婪匹配就是在匹配字符时,尽可能少地匹配字符,可以通过在量词后面加上问号“?”来实现。

非贪婪模式通常会取代贪婪模式,因为非贪婪模式可以防止贪婪模式过度匹配字符。

五、正则表达式非匹配

正则表达式非匹配是指在匹配字符串时,匹配不包含某些字符或者某些字符串的内容。在正则表达式中,可以使用负向预查来实现非匹配。

比如要匹配字符串 "hello world, hello earth" 中除了 "world" 外的所有内容,可以使用如下正则表达式实现:

const str = "hello world, hello earth";
const reg = /hello\s(?!world).*?/;
const result = str.match(reg);
console.log(result); // ["hello earth"]

在上面的正则表达式中,使用了负向预查 (?!world) 来表示不匹配字符串 "world"。这里需要注意的是,负向预查只会匹配不包含 "world" 的字符串,而不是整个字符串 "hello world, hello earth"。

六、正则表达式贪婪模式

正则表达式贪婪模式是指在匹配字符串时,尽可能多地匹配字符。在正则表达式中,贪婪模式可以通过量词后面不加问号来实现。

比如要匹配字符串 "hello world" 中的 "llo wo",可以使用如下正则表达式实现:

const str = "hello world";
const reg = /l.*o/;
const result = str.match(reg);
console.log(result); // ["llo world"]

在这个正则表达式中,使用了贪婪模式,它在匹配字符时,尽可能多地匹配字符。

七、正则表达式匹配数字

在正则表达式中,可以使用元字符 \d 来表示匹配数字。

比如要匹配字符串 "a1b2c3d4" 中的数字,可以使用如下正则表达式实现:

const str = "a1b2c3d4";
const reg = /\d+/;
const result = str.match(reg);
console.log(result); // ["1"]

在这个正则表达式中,使用了元字符 \d 来表示匹配数字。

八、正则表达式懒惰匹配

正则表达式懒惰匹配是指在匹配字符串时,尽可能少地匹配字符。在正则表达式中,懒惰模式可以通过在量词后面加上问号“?”来实现。

比如要匹配字符串 "hello world" 中的 "llo",可以使用如下正则表达式实现:

const str = "hello world";
const reg = /l.*?o/;
const result = str.match(reg);
console.log(result); // ["llo"]

在这个正则表达式中,使用了懒惰模式,它在匹配字符时,尽可能少地匹配字符。

九、正则表达式贪心匹配

正则表达式贪心匹配是指在匹配字符串时,尽可能多地匹配字符。在正则表达式中,贪心模式可以通过量词后面不加问号来实现。

比如要匹配字符串 "hello world" 中的 "llo",可以使用如下正则表达式实现:

const str = "hello world";
const reg = /l.*o/;
const result = str.match(reg);
console.log(result); // ["llo world"]

在这个正则表达式中,使用了贪心模式,它在匹配字符时,尽可能多地匹配字符。

十、正则表达式匹配非负整数

在正则表达式中,可以使用元字符 \d 和量词 + 来表示匹配非负整数。

比如要匹配字符串 "123" 中的非负整数,可以使用如下正则表达式实现:

const str = "123";
const reg = /\d+/;
const result = str.match(reg);
console.log(result); // ["123"]

在这个正则表达式中,使用了元字符 \d 和量词 + 来表示匹配非负整数。