一、正则表达式里非贪婪模式
正则表达式里非贪婪模式就是在匹配字符串时,尽可能少地匹配字符。在正则表达式中,非贪婪模式可以通过在量词后面加上问号“?”来实现。
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
和量词 +
来表示匹配非负整数。