关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » HTML5 »史上最复杂的验证邮件地址的正则表达式

    史上最复杂的验证邮件地址的正则表达式

    2015-08-05 00:00:00 出处:linux.cn
    分享

    用正则表达式验证邮件地址似乎是一件简单的事情,但是假如要完美的验证一个合规的邮件地址,其实也许很复杂。

    史上最复杂的验证邮件地址的正则表达式

    邮件地址的规范来自于 RFC 5322 。有一个网站 emailregex.com 专门列出各种编程语言下的验证邮件地址的正则表达式,其中很多正则表达式都是我听说过而从未见过的复杂——我想说,做这个网站的程序员是被邮件验证这件事伤害了多深啊!

    其实,在产品环境中,一般来说并不需要这么复杂的正则表达式来做到99.99%正确。一般来说,从执行效率和测试覆盖率来说,只需要一个简单的版本即可:

    /^[A-Z0-9._%+-]+@[A-Z0-9.-]+/.[A-Z]{2,4}$/i

    那么下面我们来看看这些更严谨、更复杂的正则表达式吧:

    验证邮件地址的通用正则表达式(符合 RFC 5322 标准)

    ( :[a-z0-9!#$%&'*+/= ^_`{|}~-]+( :/.[a-z0-9!#$%&'*+/= ^_`{|}~-]+)*|"( :[/x01-/x08/x0b/x0c/x0e-/x1f/x21/x23-/x5b/x5d-/x7f]|//[/x01-/x09/x0b/x0c/x0e-/x7f])*")@( :( :[a-z0-9]( :[a-z0-9-]*[a-z0-9]) /.)+[a-z0-9]( :[a-z0-9-]*[a-z0-9]) |/[( :( :25[0-5]|2[0-4][0-9]|[01] [0-9][0-9] )/.){3}( :25[0-5]|2[0-4][0-9]|[01] [0-9][0-9] |[a-z0-9-]*[a-z0-9]:( :[/x01-/x08/x0b/x0c/x0e-/x1f/x21-/x5a/x53-/x7f]|//[/x01-/x09/x0b/x0c/x0e-/x7f])+)/])

    由于各种语言对正则表达式的支持不同、语法差异和覆盖率不同,所以,不同语言里面的正则表达式也不同:

    Python

    这个是个简单的版本:

    r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+/.[a-zA-Z0-9-.]+$)"

    Javascript

    这个有点复杂了:

    /^[-a-z0-9~!$%^&*_=+}{/' ]+(/.[-a-z0-9~!$%^&*_=+}{/' ]+)*@([a-z0-9_][-a-z0-9_]*(/.[-a-z0-9_]+)*/.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}))(:[0-9]{1,5}) $/i

    Swift

    [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,6}

    PHP

    PHP 的这个版本就更复杂了,覆盖率就更大一些:

    /^( !( :( :/x22 /x5C[/x00-/x7E]/x22 )|( :/x22 [^/x5C/x22]/x22 )){255,})( !( :( :/x22 /x5C[/x00-/x7E]/x22 )|( :/x22 [^/x5C/x22]/x22 )){65,}@)( :( :[/x21/x23-/x27/x2A/x2B/x2D/x2F-/x39/x3D/x3F/x5E-/x7E]+)|( :/x22( :[/x01-/x08/x0B/x0C/x0E-/x1F/x21/x23-/x5B/x5D-/x7F]|( :/x5C[/x00-/x7F]))*/x22))( :/.( :( :[/x21/x23-/x27/x2A/x2B/x2D/x2F-/x39/x3D/x3F/x5E-/x7E]+)|( :/x22( :[/x01-/x08/x0B/x0C/x0E-/x1F/x21/x23-/x5B/x5D-/x7F]|( :/x5C[/x00-/x7F]))*/x22)))*@( :( :( !.*[^.]{64,})( :( :( :xn--) [a-z0-9]+( :-[a-z0-9]+)*/.){1,126}){1,}( :( :[a-z][a-z0-9]*)|( :( :xn--)[a-z0-9]+))( :-[a-z0-9]+)*)|( :/[( :( :IPv6:( :( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){7})|( :( !( :.*[a-f0-9][:/]]){7,})( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){0,5}) ::( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){0,5}) )))|( :( :IPv6:( :( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){5}: )|( :( !( :.*[a-f0-9]: ){5,})( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){0,3}) ::( :[a-f0-9]{1,4}( ::[a-f0-9]{1,4}){0,3}: ) ))) ( :( :25[0-5])|( :2[0-4][0-9])|( :1[0-9]{2})|( :[1-9] [0-9]))( :/.( :( :25[0-5])|( :2[0-4][0-9])|( :1[0-9]{2})|( :[1-9] [0-9]))){3}))/]))$/iD

    Perl / Ruby

    对与 PHP 的版本,Perl 和 Ruby 表示不服,可以更严谨:

    ( :( :/r/n) [ /t])*( :( :( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t]
     )+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :
     /r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :(
      :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [
     /t]))*"( :( :/r/n) [ /t])*))*@( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/0
     31]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/
     ]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+
     ( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :
     ( :/r/n) [ /t])*))*|( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z
     |( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n)
      [ /t])*)*/<( :( :/r/n) [ /t])*( :@( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/
     r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [
     /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n)
      [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t]
     )*))*( :,@( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [
     /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*
     )( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t]
     )+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*)
     *:( :( :/r/n) [ /t])*) ( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+
     |/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r
     /n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :
     /r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t
     ]))*"( :( :/r/n) [ /t])*))*@( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031
     ]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/](
      :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( 
     :(  :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( 
     :/r/n) [ /t])*))*/>( :( :/r/n) [ /t])*)|( :[^()<>@,;://"./[/] /000-/031]+( :( 
     :(  :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) 
     [ /t]))*"( :( :/r/n) [ /t])*)*:( :( :/r/n) [ /t])*( :( :( :[^()<>@,;://"./[/]
     /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|
     //.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>
     @,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"
     ( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*))*@( :( :/r/n) [ /t]
     )*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://
     "./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( 
     :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[
     /]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*|( :[^()<>@,;://"./[/] /000-
     /031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|(
      :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)*/<( :( :/r/n) [ /t])*( :@( :[^()<>@,;
     ://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([
     ^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"
     ./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/
     ]/r//]|//.)*/]( :( :/r/n) [ /t])*))*( :,@( :( :/r/n) [ /t])*( :[^()<>@,;://"./
     [/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/
     r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/]
     /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]
     |//.)*/]( :( :/r/n) [ /t])*))*)*:( :( :/r/n) [ /t])*) ( :[^()<>@,;://"./[/] /0
     00-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( :[^/"/r//]|//
     .|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[^()<>@,
     ;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]]))|"( 
     :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*))*@( :( :/r/n) [ /t])*
     ( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://".
     /[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t])*( :[
     ^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/]
     ]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*/>( :( :/r/n) [ /t])*)( :,/s*(
      :( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://
     "./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)( :/.( :(
      :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[
     /["()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t
     ])*))*@( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t
     ])+|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( 
     :/.( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|
     /Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*|( :
     [^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://"./[/
     ]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)*/<( :( :/r/n)
      [ /t])*( :@( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["
     ()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n)
      [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>
     @,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*( :,@( :( :/r/n) [
     /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,
     ;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/.( :( :/r/n) [ /t]
     )*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://
     "./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*)*:( :( :/r/n) [ /t])*) 
     ( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/["()<>@,;://".
     /[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])*)( :/.( :( :
     /r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z|( =[/[
     "()<>@,;://"./[/]]))|"( :[^/"/r//]|//.|( :( :/r/n) [ /t]))*"( :( :/r/n) [ /t])
     *))*@( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])
     +|/Z|( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*)( :/
     .( :( :/r/n) [ /t])*( :[^()<>@,;://"./[/] /000-/031]+( :( :( :/r/n) [ /t])+|/Z
     |( =[/["()<>@,;://"./[/]]))|/[([^/[/]/r//]|//.)*/]( :( :/r/n) [ /t])*))*/>( :(
      :/r/n) [ /t])*))*) ;/s*)

    Perl 5.10 及以后版本

    上面的版本,嗯,我可以说是天书吗?反正我是没有解读的想法了。当然,新版本的 Perl 语言还有一个更易读的版本(你是说真的么?)

    /( (DEFINE)
    ( <address> ( &mailbox) | ( &group))
    ( <mailbox> ( &name_addr) | ( &addr_spec))
    ( <name_addr> ( &display_name)  ( &angle_addr))
    ( <angle_addr> ( &CFWS)  < ( &addr_spec) > ( &CFWS) )
    ( <group> ( &display_name) : ( :( &mailbox_list) | ( &CFWS))  ;
    ( &CFWS) )
    ( <display_name> ( &phrase))
    ( <mailbox_list> ( &mailbox) ( : , ( &mailbox))*)
    
    ( <addr_spec> ( &local_part) /@ ( &domain))
    ( <local_part> ( &dot_atom) | ( &quoted_string))
    ( <domain> ( &dot_atom) | ( &domain_literal))
    ( <domain_literal> ( &CFWS)  /[ ( : ( &FWS)  ( &dcontent))* ( &FWS) 
    /] ( &CFWS) )
    ( <dcontent> ( &dtext) | ( &quoted_pair))
    ( <dtext> ( &NO_WS_CTL) | [/x21-/x5a/x5e-/x7e])
    
    ( <atext> ( &ALPHA) | ( &DIGIT) | [!#/$%&'*+-/= ^_`{|}~])
    ( <atom> ( &CFWS)  ( &atext)+ ( &CFWS) )
    ( <dot_atom> ( &CFWS)  ( &dot_atom_text) ( &CFWS) )
    ( <dot_atom_text> ( &atext)+ ( : /. ( &atext)+)*)
    
    ( <text> [/x01-/x09/x0b/x0c/x0e-/x7f])
    ( <quoted_pair> // ( &text))
    
    ( <qtext> ( &NO_WS_CTL) | [/x21/x23-/x5b/x5d-/x7e])
    ( <qcontent> ( &qtext) | ( &quoted_pair))
    ( <quoted_string> ( &CFWS)  ( &DQUOTE) ( :( &FWS)  ( &qcontent))*
    ( &FWS)  ( &DQUOTE) ( &CFWS) )
    
    ( <word> ( &atom) | ( &quoted_string))
    ( <phrase> ( &word)+)
    
    # Folding white space
    ( <FWS> ( : ( &WSP)* ( &CRLF))  ( &WSP)+)
    ( <ctext> ( &NO_WS_CTL) | [/x21-/x27/x2a-/x5b/x5d-/x7e])
    ( <ccontent> ( &ctext) | ( &quoted_pair) | ( &comment))
    ( <comment> /( ( : ( &FWS)  ( &ccontent))* ( &FWS)  /) )
    ( <CFWS> ( : ( &FWS)  ( &comment))*
    ( : ( :( &FWS)  ( &comment)) | ( &FWS)))
    
    # No whitespace control
    ( <NO_WS_CTL> [/x01-/x08/x0b/x0c/x0e-/x1f/x7f])
    
    ( <ALPHA> [A-Za-z])
    ( <DIGIT> [0-9])
    ( <CRLF> /x0d /x0a)
    ( <DQUOTE> ")
    ( <WSP> [/x20/x09])
    )
    
    ( &address)/x

    Ruby (简单版)

    Ruby 表示,其实人家还有个简单版本:

    //A([/w+/-]. )+@[a-z/d/-]+(/.[a-z]+)*/.[a-z]+/z/i

    .NET

    这样的版本谁没有啊——.NET 说:

    ^/w+([-+.']/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$

    grep 命令

    用 grep 命令在文件中查找邮件地址,我想你不会写个若干行的正则表达式吧,意思一下就行了:

    $ grep -E -o "/b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,6}/b" filename.txt

    SQL Server

    在 SQL Server 中也是可以用正则表达式的,不过这个代码片段应该是来自某个产品环境中的,所以,还体贴的照顾了那些把邮件地址写错的人:

     select email 
     from table_name where 
     patindex ('%[ &'',":;!+=//()<>]%', email) > 0 -- Invalid characters
     or patindex ('[@.-_]%', email) > 0 -- Valid but cannot be starting character
     or patindex ('%[@.-_]', email) > 0 -- Valid but cannot be ending character
     or email not like '%@%.%' -- Must contain at least one @ and one .
     or email like '%..%' -- Cannot have two periods in a row
     or email like '%@%@%' -- Cannot have two @ anywhere
     or email like '%.@%' or email like '%@.%' -- Cannot have @ and . next to each other
     or email like '%.cm' or email like '%.co' -- Camaroon or Colombia  Typos. 
     or email like '%.or' or email like '%.ne' -- Missing last letter

    Oracle PL/SQL

    这个是不是有点偷懒?尤其是在那些“复杂”的正则表达式之后:

    SELECT email 
    FROM table_name
    WHERE REGEXP_LIKE (email, '[A-Z0-9._%-]+@[A-Z0-9._%-]+/.[A-Z]{2,4}');

    MySQL

    好吧,看来最后也一样懒:

    SELECT * FROM `users` WHERE `email` NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+/.[A-Z]{2,4}$';

    那么,你有没有关于验证邮件地址的正则表达式分享给大家?

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    电脑屏幕不小心竖起来了?别慌,快捷键搞定

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    IT头条

    Synology 更新 ActiveProtect Manager 1.1 以增强企业网络弹性和合规性

    00:43

    新的 Rubrik Agent Cloud 加速了可信的企业 AI 代理部署

    00:34

    宇树科技 G1人形机器人,拉动一辆重达1.4吨的汽车

    00:21

    Cloudera 调查发现,96% 的企业已将 AI 集成到核心业务流程中,这表明 AI 已从竞争优势转变为强制性实践

    02:05

    投资者反对马斯克 1 万亿美元薪酬方案,要求重组特斯拉董事会

    01:18

    技术热点

    大型网站的 HTTPS 实践(三):基于协议和配置的优化

    ubuntu下右键菜单添加新建word、excel文档等快捷方式

    Sublime Text 简明教程

    用户定义SQL Server函数的描述

    怎么在windows 7开始菜单中添加下载选项?

    SQL Server 2016将有哪些功能改进?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。