柚子快报邀请码778899分享:正则表达式括号的作用

http://www.51969.com/

不管哪门语言中都有括号。正则表达式也是一门语言,而括号的存在使这门语言更为强大。

对括号的使用是否得心应手,是衡量对正则的掌握水平的一个侧面标准。

括号的作用,其实三言两语就能说明白,括号提供了分组,便于我们引用它。

引用某个分组,会有两种情形:在 JavaScript 里引用它,在正则表达式里引用它。

本章内容虽相对简单,但我也要写长点。

内容包括:

分组和分支结构

分组引用

反向引用

非捕获括号

相关案例

分组和分支结构

这二者是括号最直觉的作用,也是最原始的功能,强调括号内的正则是一个整体,即提供子表达式。

分组

我们知道 /a+/ 匹配连续出现的 "a",而要匹配连续出现的 "ab" 时,需要使用 /(ab)+/。

其中括号是提供分组功能,使量词 + 作用于 "ab" 这个整体,测试如下:

var regex = /(ab)+/g;

var string = "ababa abbb ababab";

console.log( string.match(regex) );

// => ["abab", "ab", "ababab"]

分支结构

而在多选分支结构 (p1|p2) 中,此处括号的作用也是不言而喻的,提供了分支表达式的所有可能。

比如,要匹配如下的字符串:

I love JavaScript

I love Regular Expression

可以使用正则:

var regex = /^I love (JavaScript|Regular Expression)$/;

console.log( regex.test("I love JavaScript") );

console.log( regex.test("I love Regular Expression") );

// => true

// => true

如果去掉正则中的括号,即:/^I love JavaScript|Regular Expression$/

匹配字符串是 "I love JavaScript" 和 "Regular Expression",当然这不是我们想要的。

分组引用

这是括号一个重要的作用,有了它,我们就可以进行数据提取,以及更强大的替换操作。

而要使用它带来的好处,必须配合使用实现环境的 API。

以日期为例。假设格式是 yyyy-mm-dd 的,我们可以先写一个简单的正则:

var regex = /\d{4}-\d{2}-\d{2}/;

其可视化形式是:

然后再修改成括号版的:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

其可视化形式是:

对比这两个可视化图片,我们发现,与前者相比,后者多了分组编号,如 Group #1。

其实正则引擎也是这么做的,在匹配过程中,给每一个分组都开辟一个空间,用来存储每一个分组匹配到的数据。

既然分组可以捕获数据,那么我们就可以使用它们。

提取数据

比如提取出年、月、日,可以这么做:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

console.log( string.match(regex) );

// => ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]

NOTE: match 返回的一个数组,第一个元素是整体匹配结果,然后是各个分组(括号里)匹配的内容,然后是匹配下标,最后是输入的文本。另外,正则表达式是否有修饰符 g,match返回的数组格式是不一样的。

另外也可以使用正则实例对象的 exec 方法:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

console.log( regex.exec(string) );

// => ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]

同时,也可以使用构造函数的全局属性 $1 至 $9 来获取:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

regex.test(string); // 正则操作即可,例如

//regex.exec(string);

//string.match(regex);

console.log(RegExp.$1); // "2017"

console.log(RegExp.$2); // "06"

console.log(RegExp.$3); // "12"

替换

比如,想把 yyyy-mm-dd 格式,替换成 mm/dd/yyyy 怎么做?

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

var result = string.replace(regex, "$2/$3/$1");

console.log(result);

// => "06/12/2017"

其中 replace 中的,第二个参数里用 $1、$2、$3 指代相应的分组。等价于如下的形式:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

var result = string.replace(regex, function () {

return RegExp.$2 + "/" + RegExp.$3 + "/" + RegExp.$1;

});

console.log(result);

// => "06/12/2017"

也等价于:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

var result = string.replace(regex, function (match, year, month, day) {

return month + "/" + day + "/" + year;

});

console.log(result);

// => "06/12/2017"

反向引用

除了使用相应 API 来引用分组,也可以在正则本身里引用分组。但只能引用之前出现的分组,即反向引用。

还是以日期为例。

比如要写一个正则支持匹配如下三种格式:

2016-06-12

2016/06/12

2016.06.12

最先可能想到的正则是:

var regex = /\d{4}(-|\/|\.)\d{2}(-|\/|\.)\d{2}/;

var string1 = "2017-06-12";

var string2 = "2017/06/12";

var string3 = "2017.06.12";

var string4 = "2016-06/12";

console.log( regex.test(string1) ); // true

console.log( regex.test(string2) ); // true

console.log( regex.test(string3) ); // true

console.log( regex.test(string4) ); // true

其中 / 和 . 需要转义。虽然匹配了要求的情况,但也匹配 "2016-06/12" 这样的数据。

假设我们想要求分割符前后一致怎么办?此时需要使用反向引用:

var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/;

var string1 = "2017-06-12";

var string2 = "2017/06/12";

var string3 = "2017.06.12";

var string4 = "2016-06/12";

console.log( regex.test(string1) ); // true

console.log( regex.test(string2) ); // true

console.log( regex.test(string3) ); // true

console.log( regex.test(string4) ); // false

其可视化形式是:

注意里面的 \1,表示的引用之前的那个分组 (-|\/|\.)。不管它匹配到什么(比如 -),\1 都匹配那个同样的具体某个字符。

我们知道了 \1 的含义后,那么 \2 和 \3的概念也就理解了,即分别指代第二个和第三个分组。

看到这里,此时,恐怕你会有几个问题。

括号嵌套怎么办?

以左括号(开括号)为准。比如:

var regex = /^((\d)(\d(\d)))\1\2\3\4$/;

var string = "1231231233";

console.log( regex.test(string) ); // true

console.log( RegExp.$1 ); // 123

console.log( RegExp.$2 ); // 1

console.log( RegExp.$3 ); // 23

console.log( RegExp.$4 ); // 3

我们可以看看这个正则匹配模式:

第一个字符是数字,比如说 "1",

第二个字符是数字,比如说 "2",

第三个字符是数字,比如说 "3",

接下来的是 \1,是第一个分组内容,那么看第一个开括号对应的分组是什么,是 "123",

接下来的是 \2,找到第2个开括号,对应的分组,匹配的内容是 "1",

接下来的是 \3,找到第3个开括号,对应的分组,匹配的内容是 "23",

最后的是 \4,找到第3个开括号,对应的分组,匹配的内容是 "3"。

此正则的可视化形式是:

\10 表示什么呢?

另外一个疑问可能是,即 \10 是表示第 10 个分组,还是 \1 和 0 呢?

答案是前者,虽然一个正则里出现 \10 比较罕见。测试如下:

var regex = /(1)(2)(3)(4)(5)(6)(7)(8)(9)(#) \10+/;

var string = "123456789# ######"

console.log( regex.test(string) );

// => true

TIP: 如果真要匹配 \1 和 0 的话,请使用 (?:\1)0 或者 \1(?:0)。

引用不存在的分组会怎样?

因为反向引用,是引用前面的分组,但我们在正则里引用了不存在的分组时,此时正则不会报错,只是匹配反向引用的字符本身。例如 \2,就匹配 "\2"。注意 "\2" 表示对 "2" 进行了转义。

var regex = /\1\2\3\4\5\6\7\8\9/;

console.log( regex.test("\1\2\3\4\5\6\7\8\9") );

console.log( "\1\2\3\4\5\6\7\8\9".split("") );

Chrome 浏览器打印的结果:

分组后面有量词会怎样?

分组后面有量词的话,分组最终捕获到的数据是最后一次的匹配。比如如下的测试案例:

var regex = /(\d)+/;

var string = "12345";

console.log( string.match(regex) );

// => ["12345", "5", index: 0, input: "12345"]

从上面看出,分组 (\d) 捕获的数据是 "5"。

同理对于反向引用,也是这样的。测试如下:

var regex = /(\d)+ \1/;

console.log( regex.test("12345 1") );

// => false

console.log( regex.test("12345 5") );

// => true

非捕获括号

之前文中出现的括号,都会捕获它们匹配到的数据,以便后续引用,因此也称它们是捕获型分组和捕获型分支。

如果只想要括号最原始的功能,但不会引用它,即,既不在 API 里引用,也不在正则里反向引用。

此时可以使用非捕获括号 (?:p) 和 (?:p1|p2|p3),例如本章第一个例子可以修改为:

var regex = /(?:ab)+/g;

var string = "ababa abbb ababab";

console.log( string.match(regex) );

// => ["abab", "ab", "ababab"]

同理,第二例子可以修改为:

var regex = /^I love (?:JavaScript|Regular Expression)$/;

console.log( regex.test("I love JavaScript") );

console.log( regex.test("I love Regular Expression") );

// => true

// => true

相关案例

至此括号的作用已经讲完了,总结一句话,就是提供了可供我们使用的分组,如何用就看我们的了。

字符串 trim 方法模拟

trim 方法是去掉字符串的开头和结尾的空白符。有两种思路去做。

第一种,匹配到开头和结尾的空白符,然后替换成空字符。如:

function trim(str) {

return str.replace(/^\s+|\s+$/g, '');

}

console.log( trim(" foobar ") );

// => "foobar"

第二种,匹配整个字符串,然后用引用来提取出相应的数据:

function trim (str) {

return str.replace(/^\s*(.*?)\s*$/g, "$1");

}

console.log( trim(" foobar ") );

// => "foobar"

这里使用了惰性匹配 *?,不然也会匹配最后一个空格之前的所有空格的

当然,前者效率高。

将每个单词的首字母转换为大写

function titleize (str) {

return str.toLowerCase().replace(/(?:^|\s)\w/g, function (c) {

return c.toUpperCase();

});

}

console.log( titleize('my name is epeli') );

// => "My Name Is Epeli"

思路是找到每个单词的首字母,当然这里不使用非捕获匹配也是可以的。

驼峰化

function camelize (str) {

return str.replace(/[-_\s]+(.)?/g, function (match, c) {

return c ? c.toUpperCase() : '';

});

}

console.log( camelize('-moz-transform') );

// => "MozTransform"

其中分组 (.) 表示首字母。单词的界定是,前面的字符可以是多个连字符、下划线以及空白符。正则后面的 ? 的目的,是为了应对 str 尾部的字符可能不是单词字符,比如 str 是 '-moz-transform '。

中划线化

function dasherize (str) {

return str.replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase();

}

console.log( dasherize('MozTransform') );

// => "-moz-transform"

驼峰化的逆过程。

HTML 转义和反转义

// 将HTML特殊字符转换成等值的实体

function escapeHTML (str) {

var escapeChars = {

'<' : 'lt',

'>' : 'gt',

'"' : 'quot',

'&' : 'amp',

'\'' : '#39'

};

return str.replace(new RegExp('[' + Object.keys(escapeChars).join('') +']', 'g'),

function (match) {

return '&' + escapeChars[match] + ';';

});

}

console.log( escapeHTML('

Blah blah blah
') );

// => "<div>Blah blah blah</div>";

其中使用了用构造函数生成的正则,然后替换相应的格式就行了,这个跟本章没多大关系。

倒是它的逆过程,使用了括号,以便提供引用,也很简单,如下:

// 实体字符转换为等值的HTML。

function unescapeHTML (str) {

var htmlEntities = {

nbsp: ' ',

lt: '<',

gt: '>',

quot: '"',

amp: '&',

apos: '\''

};

return str.replace(/\&([^;]+);/g, function (match, key) {

if (key in htmlEntities) {

return htmlEntities[key];

}

return match;

});

}

console.log( unescapeHTML('<div>Blah blah blah</div>') );

// => "

Blah blah blah
"

通过 key 获取相应的分组引用,然后作为对象的键。

匹配成对标签

要求匹配:

regular expression

laoyao bye bye

不匹配:

wrong!</p></p><p>匹配一个开标签,可以使用正则 <[^>]+>,</p><p>匹配一个闭标签,可以使用 <\/[^>]+>,</p><p>但是要求匹配成对标签,那就需要使用反向引用,如:</p><p>var regex = /<([^>]+)>[\d\D]*<\/\1>/;</p><p>var string1 = "<title>regular expression";

var string2 = "

laoyao bye bye

";

var string3 = "wrong!</p>";</p><p>console.log( regex.test(string1) ); // true</p><p>console.log( regex.test(string2) ); // true</p><p>console.log( regex.test(string3) ); // false</p><p>其中开标签 <[\^>]+> 改成 <([^>]+)>,使用括号的目的是为了后面使用反向引用,而提供分组。闭标签使用了反向引用,<\/\1>。</p><p>另外,[\d\D]的意思是,这个字符是数字或者不是数字,因此,也就是匹配任意字符的意思。</p><p>本章小结</p><p>重点理解括号可以提供分组,我们可以提取数据,应该就可以了。</p><p>柚子快报邀请码778899分享:正则表达式括号的作用</p><p><a href="http://www.51969.com/" target="_blank">http://www.51969.com/</a></p><p><a href="https://www.cnblogs.com/meowv/p/12895081.html" rel="nofollow noreferrer" target="_blank">查看原文</a></p> </div> <div class="copyright"><blockquote>本文由 用户 于 2023-09-11 发布在 夸智网,如有疑问,请联系我们。<br>本文链接:<a href="https://www.kuazhi.com/post/568941.html">https://www.kuazhi.com/post/568941.html</a></blockquote></div> <div class="single-share"> <div class="post-share"> <a title="分享"><i class="jzicon-jzfenxiang"></i></a> <div class="share-icons share-sns" data-title="柚子快报邀请码778899分享:正则表达式括号的作用" data-url="https://www.kuazhi.com/post/568941.html"> <span class="share-icon share-wechat cl" data-type="wechat" title="分享到微信"><i class="jzicon-weixin"></i><span id="wechat-qrcode"></span></span> <span class="share-icon share-sina-weibo cl" data-type="weibo" title="分享到微博"><i class="jzicon-weibo"></i></span><span class="share-icon share-qq cl" data-type="qq" title="分享到QQ好友"><i class="jzicon-qq"></i></span> </div> </div> <div class="post-like"> <a href="javascript:;" onclick="Jz52_tsqa_prise('568941')" class="Jz52_tsqa_prise_id-568941 dotGood Jz52_tsqa_prise badge" title="好文!一定要点赞!" data-badge="0"><i class="jzicon-jzzan-h"></i><em class="emz">0</em><em>赞</em></a> </div></div> </div> <div class="nextpro www_kuazhi_com"> <div class="prev"> <article class="post-overlay"> <div class="background-img" style="background-image:url(https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/style/images/prevnoimg.jpg)"> </div> <div class="post_text"> <span><i class="jzicon-angle-left"></i>上一篇</span> <h3 class="post__title typescale-1 nav-prev">基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目</h3> </div> <a href="https://www.kuazhi.com/post/568940.html" class="link-overlay"></a> </article> </div> <div class="next"> <article class="post-overlay"> <div class="background-img" style="background-image:url(https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/style/images/nextnoimg.jpg)"> </div> <div class="post_text"> <span>下一篇<i class="jzicon-angle-right"></i></span> <h3 class="post__title typescale-1 nav-next">柚子快报激活码778899分享:正则表达式位置匹配</h3> </div> <a href="https://www.kuazhi.com/post/568942.html" class="link-overlay"></a> </article> </div> </div> <div class="related-list www_kuazhi_com"> <h3><i class="jzicon-jztuwen"></i> 相关文章</h3> <ul> <li><a href="https://www.kuazhi.com/post/714335546.html" title="java spring cloud (二)Eureka 高可用"><p>java spring cloud (二)Eureka 高可用</p></a> </li> <li><a href="https://www.kuazhi.com/post/714335539.html" title="柚子快报注册链接778899分享:随机森林算法简介"><p>柚子快报注册链接778899分享:随机森林算法简介</p></a> </li> <li><a href="https://www.kuazhi.com/post/714335532.html" title="eureka 容器 Docker实战技巧:10个常用命令,助你轻松应对各种开发场景!"><p>eureka 容器 Docker实战技巧:10个常用命令,助你轻松应对各种开发场景!</p></a> </li> <li><a href="https://www.kuazhi.com/post/714335525.html" title="知识图谱:一种从文本中挖掘信息的强大数据科学技术"><p>知识图谱:一种从文本中挖掘信息的强大数据科学技术</p></a> </li> <li><a href="https://www.kuazhi.com/post/714335518.html" title="spring cloud java springcloud基本使用(搭建eureka服务端)"><p>spring cloud java springcloud基本使用(搭建eureka服务端)</p></a> </li> <li><a href="https://www.kuazhi.com/post/712817460.html" title="1024程序员节 linux 【Docker】Docker学习之一:离线安装Docker步骤"><p>1024程序员节 linux 【Docker】Docker学习之一:离线安装Docker步骤</p></a> </li> <li><a href="https://www.kuazhi.com/post/444792.html" title="分离架构 开源框架 Jeecg-Boot 低代码开发平台之路(一) —— 开始从零学起"><p>分离架构 开源框架 Jeecg-Boot 低代码开发平台之路(一) —— 开始从零学起</p></a> </li> <li><a href="https://www.kuazhi.com/post/605194.html" title="fpga开发 FPGA学习笔记:数据采集传输系统设计(五):ADC采集FIFO缓存UART发送系统"><p>fpga开发 FPGA学习笔记:数据采集传输系统设计(五):ADC采集FIFO缓存UART发送系统</p></a> </li> </ul> </div> <div class="comments www_kuazhi_com"> <div id="comments" class="comments-area clearfix"> <div class="comment-list"><!--评论框--><div class="jz-comment" id="divCommentPost"><h4 class="comments-title"> <span><i class="jzicon-jzqipaoc"></i>发表评论</span><a rel="nofollow" id="cancel-reply" href="#divCommentPost" style="display:none;float:right;"><small>取消回复</small></a></h4> <form id="frmSumbit" target="_self" method="post" action="https://www.kuazhi.com/zb_system/cmd.php?act=cmt&postid=568941&key=907aeff478f47fab25be37b64d620574" ><input type="hidden" name="inpId" id="inpId" value="568941"><input type="hidden" name="inpRevID" id="inpRevID" value="0"><div class="jz-comment-box jz-comment-ul3"> <input type="text" name="inpName" id="inpName" class="text" value="" size="28" tabindex="1" placeholder="名称(*)"> </div> <div class="jz-comment-box jz-comment-ul3 jz-comment-ul3-2"> <input type="text" name="inpEmail" id="inpEmail" class="text" value="" size="28" tabindex="2" placeholder="邮箱"> </div> <div class="jz-comment-box jz-comment-ul3"> <input type="text" name="inpHomePage" id="inpHomePage" class="text" value="" size="28" tabindex="3" placeholder="网站"> </div><div class="jz-comment-box jz-comment-textarea"> <textarea name="txaArticle" id="txaArticle" class="text" cols="50" rows="4" tabindex="5" placeholder="欢迎在这里交流评论,但是垃圾评论不受欢迎!"></textarea> </div><input name="sumbit" type="submit" tabindex="6" value="发表评论" onclick="return zbp.comment.post()" class="jz-commbut"> </form></div><label id="AjaxCommentBegin"></label><!--评论输出--><!--评论翻页条输出--><div class="pagelist page-comment"> </div><label id="AjaxCommentEnd"></label></div> </div></div> </div> </div> <aside id="sticky-wrapper"><div> <span class="ifread"><a href="javascript:;" onclick="Jz52_tsqa_prise('568941')" class="Jz52_tsqa_prise_id-568941 dotGood Jz52_tsqa_prise badge" title="好文!一定要点赞!" data-badge="0"><i class="jzicon-jzzan-h"></i><em class="emz">0</em><em>赞</em></a></span><span class="ifread"><a title="回复" href="#divCommentPost" class="badge" data-badge="0"><i class="jzicon-message-3-fill"></i></a></span><span class="ifread"><a title="热度" href="#" class="badge" data-badge="1"><i class="jzicon-fire-fill"></i></a></span><span class="ifread Cshare"><a title="分享" href="javascript:;" class=""><i class="jzicon-share-forward-fill"></i></a> <em class="share-sns" data-title="柚子快报邀请码778899分享:正则表达式括号的作用" data-url="https://www.kuazhi.com/post/568941.html"> <span class="cl" data-type="wechatl" title="分享到微信"><a title="分享到微信" href="#" class="bds_weixin" ><i class="jzicon-weixin"></i>微信<span id="wechat-qrcodel"></span></a></span><span class="cl" data-type="weibo" title="分享到微博"><a title="分享到新浪微博" href="#" class="bds_tsina" ><i class="jzicon-weibo"></i>新浪微博</a></span><span class="cl" data-type="qzone" title="分享到QQ空间"><a title="分享到QQ空间" href="#" class="bds_qzone" ><i class="jzicon-qzone"></i>QQ空间</a></span><span class="cl" data-type="qq" title="分享到QQ好友"><a title="分享到QQ好友" href="#" class="bds_qq" ><i class="jzicon-qq"></i>QQ</a></span> </em></span><span style="margin-top: 30px;"><a href="javascript:;" title="沉浸阅读" class="goread"><i class="jzicon-book-read-fill"></i></a></span><span class="ifread"><a title="智能问答" href="http://ai.kuazhi.com/ai_chat" class=""><i class=" jzicon-jzqipaoa "></i></a></span></div></aside> <aside id="sidebar-right"><div class="widget ifread" id="side-new-userarticle"><h3 class="function_t">TA的新帖</h3><ul><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/714306993.html" target="_blank" title="柚子快报不激活能使用多久778899分享:python selenium">柚子快报不激活能使用多久778899分享:python selenium</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/712782891.html" target="_blank" title="1024程序员节 数据结构 c语言 排序算法 弗洛伊德(Floyd)算法求个顶点之间最短路径问题(详解+图解)">1024程序员节 数据结构 c语言 排序算法 弗洛伊德(Floyd)算法求个顶点之间最短路径问题(详解+图解)</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/713033147.html" target="_blank" title="链表 数据结构 后端 时间轮和时间堆管理定时器">链表 数据结构 后端 时间轮和时间堆管理定时器</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/714302737.html" target="_blank" title="win中python中OpenCV使用cv2.imshow()报错的解决办法">win中python中OpenCV使用cv2.imshow()报错的解决办法</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/712797507.html" target="_blank" title="Notion AI">Notion AI</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"><a class="list-title" href="https://www.kuazhi.com/post/714196687.html" target="_blank" title="linux CentOS安装RustDesk自建服务器">linux CentOS安装RustDesk自建服务器</a></div><div class="list-footer"><span>2024-06-10</span></div></div><div class="clear"></div></li></ul></div><div id="directory"></div><div class="widget ifread www_kuazhi_com" id="side-hot-view-item"><h3 class="function_t">热门文章</h3><ul><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331255.html" target="_blank" title="BGM猫 : AI定制背景音乐下载平台">BGM猫 : AI定制背景音乐下载平台</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714330982.html" target="_blank" title="U钙网 : 免费智能AI商标logo在线设计平台">U钙网 : 免费智能AI商标logo在线设计平台</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714332781.html" target="_blank" title="Miko翻译 : 免费的AI多语言翻译应用工具">Miko翻译 : 免费的AI多语言翻译应用工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714332011.html" target="_blank" title="词爪网 : 违禁词/极限词/敏感词/新广告法违禁词查询检测工具">词爪网 : 违禁词/极限词/敏感词/新广告法违禁词查询检测工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331619.html" target="_blank" title="Mokker AI背景生成器 : 一款基于人工智能技术的AI在线背景生成工具">Mokker AI背景生成器 : 一款基于人工智能技术的AI在线背景生成工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714330975.html" target="_blank" title="Vega AI创作平台 : 国产专业的AI绘画创作工具,高效在线文本生成图片和图片风格转换">Vega AI创作平台 : 国产专业的AI绘画创作工具,高效在线文本生成图片和图片风格转换</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714311585.html" target="_blank" title="完美网址导航官网 - 9EIP.COM_ 好用好玩的宝藏资源分享站">完美网址导航官网 - 9EIP.COM_ 好用好玩的宝藏资源分享站</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714314910.html" target="_blank" title="图片助手(ImageAssistant) - 批量图片下载浏览器插件">图片助手(ImageAssistant) - 批量图片下载浏览器插件</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331045.html" target="_blank" title="即时灵感 : 及时设计旗下基于人工智能的免费AI绘画工具">即时灵感 : 及时设计旗下基于人工智能的免费AI绘画工具</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714288961.html" target="_blank" title="故事AI绘图神器">故事AI绘图神器</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714317192.html" target="_blank" title="蚂蚁4K - 4K蓝光视频下载网站">蚂蚁4K - 4K蓝光视频下载网站</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714196470.html" target="_blank" title="Recipe AI">Recipe AI</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714330877.html" target="_blank" title="微撰 : AI智能聊天写作营销文案助手">微撰 : AI智能聊天写作营销文案助手</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714196547.html" target="_blank" title="Ocean Templates">Ocean Templates</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331934.html" target="_blank" title="象寄AI智能设计是一款专为电商和市场营销人员打造的智能设计工具">象寄AI智能设计是一款专为电商和市场营销人员打造的智能设计工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331304.html" target="_blank" title="虾果魔音 : 文字转语音_配音软件_语音合成_视频配音_广告配音">虾果魔音 : 文字转语音_配音软件_语音合成_视频配音_广告配音</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331430.html" target="_blank" title="MindShow : AI自动生成PPT,智能PPT生成器">MindShow : AI自动生成PPT,智能PPT生成器</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714330870.html" target="_blank" title="灵鹿AI : 免费实用的办公辅助工具">灵鹿AI : 免费实用的办公辅助工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714196603.html" target="_blank" title="AsktheDoc">AsktheDoc</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714330884.html" target="_blank" title="Rytr-AI写作助手,专注于AI文案为主">Rytr-AI写作助手,专注于AI文案为主</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714332424.html" target="_blank" title="星火网文助手-免费AI小说网文写作工具">星火网文助手-免费AI小说网文写作工具</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331920.html" target="_blank" title="Logo Theme AI : 人工智能AI设计Logo平台">Logo Theme AI : 人工智能AI设计Logo平台</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714332676.html" target="_blank" title="IDM-VTON : 高精度虚拟试衣、打造您的数字化试衣间">IDM-VTON : 高精度虚拟试衣、打造您的数字化试衣间</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714306888.html" target="_blank" title="头条指数">头条指数</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331500.html" target="_blank" title="PDFlux -PDF数据的提取神器">PDFlux -PDF数据的提取神器</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331416.html" target="_blank" title="YOO简历 : 个人求职简历模板免费下载|简历分析|岗位匹配">YOO简历 : 个人求职简历模板免费下载|简历分析|岗位匹配</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331570.html" target="_blank" title="PhotoKit : 免费在线图片编辑器/在线抠图/改图/修/美图">PhotoKit : 免费在线图片编辑器/在线抠图/改图/修/美图</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714327090.html" target="_blank" title="文心智能体平台-低代码开发,大模型时代的智能体构建工具">文心智能体平台-低代码开发,大模型时代的智能体构建工具</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714331822.html" target="_blank" title="Tabnine : 高效AI代码补全工具/提升编程速度与质量">Tabnine : 高效AI代码补全工具/提升编程速度与质量</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714317255.html" target="_blank" title="AI小聚-你的专属人工智能聊天绘画助手">AI小聚-你的专属人工智能聊天绘画助手</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li></ul></div><div class="widget ifread www_kuazhi_com" id="side-hot-cmt-item"><h3 class="function_t">热评文章</h3><ul><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/464072.html" target="_blank" title="国内chatgpt网页版免费使用方法">国内chatgpt网页版免费使用方法</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/277.html" target="_blank" title="Error creating bean with name 'jmxMBeanExporter' in resource JmxEndpointAutoConfiguration问题解决办法">Error creating bean with name 'jmxMBeanExporter' in resource JmxEndpointAutoConfiguration问题解决办法</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714332277.html" target="_blank" title="Ai画廊 : AI绘画关键词生成器">Ai画廊 : AI绘画关键词生成器</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/502373.html" target="_blank" title="chatgpt网址是多少">chatgpt网址是多少</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/421850.html" target="_blank" title="人工智能 ChatGPT在线访问网站">人工智能 ChatGPT在线访问网站</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714313965.html" target="_blank" title="闪电OCR图片文字识别软件-图片转文字">闪电OCR图片文字识别软件-图片转文字</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/713818316.html" target="_blank" title="哪个牌子人工智能好一点">哪个牌子人工智能好一点</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/712794601.html" target="_blank" title="软件测试 软件测试工程师 负载测试 自动化测试 Jmeter性能测试 【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...">软件测试 软件测试工程师 负载测试 自动化测试 Jmeter性能测试 【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/576986.html" target="_blank" title="javascript 前端 Typescript 之接口 interface(详解)">javascript 前端 Typescript 之接口 interface(详解)</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/356824.html" target="_blank" title="chrome selenium入门超详细教程——网页自动化操作">chrome selenium入门超详细教程——网页自动化操作</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335504.html" target="_blank" title="eureka rpc Docker的使用">eureka rpc Docker的使用</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335497.html" target="_blank" title="java eureka 微服务组件">java eureka 微服务组件</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335490.html" target="_blank" title="柚子快报怎么登录778899分享:Nacos与Eureka的区别">柚子快报怎么登录778899分享:Nacos与Eureka的区别</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335483.html" target="_blank" title="spring boot java 后端 微服务 Spring Cloud Netflix Eureka应用实战">spring boot java 后端 微服务 Spring Cloud Netflix Eureka应用实战</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335476.html" target="_blank" title="云原生 java com.netflix.client.ClientException Eureka客户端异常的解决方法,亲测有效,已解决嘿嘿嘿">云原生 java com.netflix.client.ClientException Eureka客户端异常的解决方法,亲测有效,已解决嘿嘿嘿</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335469.html" target="_blank" title="vue.js elementui javascript el-tree默认选中某个数据">vue.js elementui javascript el-tree默认选中某个数据</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335462.html" target="_blank" title="vue.js 前端vue+elementui导出复杂(单元格合并,多级表头)表格el-table转为excel导出">vue.js 前端vue+elementui导出复杂(单元格合并,多级表头)表格el-table转为excel导出</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335420.html" target="_blank" title="RepoNotes">RepoNotes</a> </div><div class="list-footer"> <span>2024-06-09</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335385.html" target="_blank" title="crAion">crAion</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335364.html" target="_blank" title="AnswerFlow AI">AnswerFlow AI</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335350.html" target="_blank" title="Habit Hero">Habit Hero</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335343.html" target="_blank" title="Inbox Zero">Inbox Zero</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335301.html" target="_blank" title="Epic Selfie">Epic Selfie</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335287.html" target="_blank" title="New Year Resolutions AI">New Year Resolutions AI</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335273.html" target="_blank" title="AI Employe">AI Employe</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335266.html" target="_blank" title="前端 javascript vue.js elementUI的el-select传递item对象或其他参数的3种方法">前端 javascript vue.js elementUI的el-select传递item对象或其他参数的3种方法</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335224.html" target="_blank" title="Fanfuel">Fanfuel</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335196.html" target="_blank" title="Devv">Devv</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335161.html" target="_blank" title="Rex Nutribot">Rex Nutribot</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li><li class="widget-list-item"><div class="widget-post-list-item"><div class="list-body"> <a class="list-title" href="https://www.kuazhi.com/post/714335119.html" target="_blank" title="Linnk.AI">Linnk.AI</a> </div><div class="list-footer"> <span>2024-06-10</span> </div></div></li></ul></div></aside> </div><script src="https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/script/asid.js"></script> <div id="footer"> <p><p>夸智网——用心陪伴AI人工智能技术共同成长</p><p><a href="https://www.kuazhi.com/category-16.html" target="_blank">AI工具</a> <a href="https://www.kuazhi.com/category-17.html" target="_blank">AI教程</a> <a href="https://www.kuazhi.com/category-15.html" target="_blank">ChatGPT教程</a></p><a href="https://beian.miit.gov.cn/" target="_blank">浙ICP备15009899号-3</a><div style="display:none"><script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script><script>LA.init({id: "JsGU3vXOubP3rMz2",ck: "JsGU3vXOubP3rMz2"})</script></div><script charset="UTF-8" id="kuazhi_ai_click" src="https://kuazhi.com/kuazhi_ai_click.js"></script><div>本站部分信息来自互联网收集,仅供学习和交流,如有侵权、后门、不妥之处,请联系我们进行删除处理。</div></p> </div></div></div><a href="javascript:void(0);" class="to-top" id="to-top"><i class="jzicon-jzzhiding"></i><em>返回顶部</em></a><a class="jznight" href="javascript:switchNightMode()" target="_self"><i class="jzicon-yejian-b"></i><em>暗黑模式</em></a><script src="https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/script/custom.js?v1.1.0"></script><script src="https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/script/qrcode.min.js"></script><script src="https://www.kuazhi.com/zb_users/plugin/gbll_rollname/names.js"></script><script src="https://www.kuazhi.com/zb_users/plugin/gbll_rollname/roll.js"></script><script src="https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/script/sticky-left.js"></script><script src="https://www.kuazhi.com/zb_users/theme/Jz52_tsqa/script/sidebar-right.js"></script><div id="ly_cache" data-id="568941"></div></body></html><!--ly_cache 2024-06-10 17:30:02-->