[{"data":1,"prerenderedAt":564},["ShallowReactive",2],{"blog-post-zh-regex-tester-guide-for-beginners":3},{"id":4,"title":5,"author":6,"body":7,"description":548,"draft":549,"extension":550,"lang":551,"meta":552,"navigation":553,"path":554,"pubDate":555,"relatedTool":556,"seo":557,"stem":558,"tags":559,"__hash__":563},"blog\u002Fblog\u002Fzh-regex-tester-guide-for-beginners.mdx","正则表达式入门指南：在线测试 Regex 模式","ujiffy team",{"type":8,"value":9,"toc":530},"minimark",[10,23,26,31,38,41,44,47,50,54,145,148,211,214,256,259,291,295,299,309,312,340,353,357,363,365,393,397,403,406,414,421,425,428,431,463,466,469,512,515,518,527],[11,12,13,14,18,19,22],"p",{},"正则表达式（Regular Expression，简称 ",[15,16,17],"strong",{},"regex"," 或 ",[15,20,21],{},"regexp","）是每个开发者迟早都要掌握的技能。它看起来像一堆乱码，但一旦理解了背后的逻辑，你会发现它简直是文本处理的瑞士军刀——验证表单、解析日志、批量替换内容，统统搞定。",[11,24,25],{},"本文带你从零开始，快速掌握正则表达式的核心语法，并学会用在线工具即时测试你的 pattern。",[27,28,30],"h2",{"id":29},"正则表达式是什么","正则表达式是什么？",[11,32,33,34,37],{},"简单说：正则表达式是一种",[15,35,36],{},"描述文本模式的语言","。",[11,39,40],{},"普通的\"查找\"功能只能搜索固定字符串，而正则可以描述\"结构\"。比如，你不需要一个个去找所有邮箱地址，只需要写一个能匹配\"邮箱格式\"的 pattern，就能一网打尽。",[11,42,43],{},"几乎所有主流编程语言都内置了正则支持——JavaScript、Python、Go、Java……代码编辑器的搜索功能、命令行工具 grep、数据库查询，也都支持正则。",[27,45,46],{"id":46},"基础语法速查表",[11,48,49],{},"不需要死记硬背，先理解这几类核心概念：",[51,52,53],"h3",{"id":53},"字符类",[55,56,57,70],"table",{},[58,59,60],"thead",{},[61,62,63,67],"tr",{},[64,65,66],"th",{},"写法",[64,68,69],{},"匹配内容",[71,72,73,85,95,105,115,125,135],"tbody",{},[61,74,75,82],{},[76,77,78],"td",{},[79,80,81],"code",{},".",[76,83,84],{},"任意单个字符（不含换行）",[61,86,87,92],{},[76,88,89],{},[79,90,91],{},"\\d",[76,93,94],{},"数字 0–9",[61,96,97,102],{},[76,98,99],{},[79,100,101],{},"\\w",[76,103,104],{},"字母、数字、下划线",[61,106,107,112],{},[76,108,109],{},[79,110,111],{},"\\s",[76,113,114],{},"空白字符（空格、制表符等）",[61,116,117,122],{},[76,118,119],{},[79,120,121],{},"[abc]",[76,123,124],{},"a、b、c 三者之一",[61,126,127,132],{},[76,128,129],{},[79,130,131],{},"[a-z]",[76,133,134],{},"任意小写字母",[61,136,137,142],{},[76,138,139],{},[79,140,141],{},"[^abc]",[76,143,144],{},"除 a、b、c 以外的字符",[51,146,147],{"id":147},"量词",[55,149,150,159],{},[58,151,152],{},[61,153,154,156],{},[64,155,66],{},[64,157,158],{},"含义",[71,160,161,171,181,191,201],{},[61,162,163,168],{},[76,164,165],{},[79,166,167],{},"*",[76,169,170],{},"0 次或多次",[61,172,173,178],{},[76,174,175],{},[79,176,177],{},"+",[76,179,180],{},"1 次或多次",[61,182,183,188],{},[76,184,185],{},[79,186,187],{},"?",[76,189,190],{},"0 次或 1 次（可选）",[61,192,193,198],{},[76,194,195],{},[79,196,197],{},"{3}",[76,199,200],{},"恰好 3 次",[61,202,203,208],{},[76,204,205],{},[79,206,207],{},"{2,5}",[76,209,210],{},"2 到 5 次",[51,212,213],{"id":213},"锚点",[55,215,216,224],{},[58,217,218],{},[61,219,220,222],{},[64,221,66],{},[64,223,158],{},[71,225,226,236,246],{},[61,227,228,233],{},[76,229,230],{},[79,231,232],{},"^",[76,234,235],{},"字符串开头",[61,237,238,243],{},[76,239,240],{},[79,241,242],{},"$",[76,244,245],{},"字符串结尾",[61,247,248,253],{},[76,249,250],{},[79,251,252],{},"\\b",[76,254,255],{},"单词边界",[51,257,258],{"id":258},"分组与选择",[55,260,261,269],{},[58,262,263],{},[61,264,265,267],{},[64,266,66],{},[64,268,158],{},[71,270,271,281],{},[61,272,273,278],{},[76,274,275],{},[79,276,277],{},"(abc)",[76,279,280],{},"捕获分组",[61,282,283,288],{},[76,284,285],{},[79,286,287],{},"a|b",[76,289,290],{},"匹配 a 或 b",[27,292,294],{"id":293},"_3-个实用例子","3 个实用例子",[51,296,298],{"id":297},"例-1邮箱地址","例 1：邮箱地址",[300,301,306],"pre",{"className":302,"code":304,"language":305},[303],"language-text","^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$\n","text",[79,307,304],{"__ignoreMap":308},"",[11,310,311],{},"逐段解释：",[313,314,315,322,328,334],"ul",{},[316,317,318,321],"li",{},[79,319,320],{},"^[\\w.-]+"," — 邮箱用户名（字母\u002F数字\u002F点\u002F连字符）",[316,323,324,327],{},[79,325,326],{},"@"," — 字面符号 @",[316,329,330,333],{},[79,331,332],{},"[\\w.-]+"," — 域名主体",[316,335,336,339],{},[79,337,338],{},"\\.[a-zA-Z]{2,}$"," — 点号 + 顶级域名（至少 2 个字母）",[11,341,342,343,346,347,18,350,37],{},"能匹配 ",[79,344,345],{},"hello@example.com","，拒绝 ",[79,348,349],{},"@nodomain",[79,351,352],{},"missingat.com",[51,354,356],{"id":355},"例-2网址url","例 2：网址（URL）",[300,358,361],{"className":359,"code":360,"language":305},[303],"https?:\\\u002F\\\u002F[\\w.-]+(\\\u002F[\\w.\u002F?=%&-]*)?\n",[79,362,360],{"__ignoreMap":308},[11,364,311],{},[313,366,367,373,382,387],{},[316,368,369,372],{},[79,370,371],{},"https?"," — 匹配 http 和 https 两种协议",[316,374,375,378,379],{},[79,376,377],{},":\\\u002F\\\u002F"," — 字面的 ",[79,380,381],{},":\u002F\u002F",[316,383,384,386],{},[79,385,332],{}," — 域名",[316,388,389,392],{},[79,390,391],{},"(\\\u002F[\\w.\u002F?=%&-]*)?"," — 可选的路径和查询参数",[51,394,396],{"id":395},"例-3日期格式yyyy-mm-dd","例 3：日期格式（YYYY-MM-DD）",[300,398,401],{"className":399,"code":400,"language":305},[303],"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$\n",[79,402,400],{"__ignoreMap":308},[11,404,405],{},"这个 pattern 不仅匹配格式，还做了基本的范围校验：",[313,407,408,411],{},[316,409,410],{},"月份只允许 01–12",[316,412,413],{},"日期只允许 01–31",[11,415,416,417,420],{},"比直接用 ",[79,418,419],{},"\\d{4}-\\d{2}-\\d{2}"," 更严格。",[27,422,424],{"id":423},"为什么推荐用在线工具测试","为什么推荐用在线工具测试？",[11,426,427],{},"很多人写正则的方式是：写好 → 放到代码里 → 跑程序 → 发现不对 → 再改。这个流程太低效了。",[11,429,430],{},"在线正则测试工具的优势：",[313,432,433,439,445,451,457],{},[316,434,435,438],{},[15,436,437],{},"实时高亮","：输入 pattern 的同时，匹配结果立即可见",[316,440,441,444],{},[15,442,443],{},"快速迭代","：改一个字符，结果马上刷新，无需重新运行程序",[316,446,447,450],{},[15,448,449],{},"捕获组可视化","：一眼看出每个分组捕获了什么内容",[316,452,453,456],{},[15,454,455],{},"测试多行文本","：直接粘贴真实数据，批量验证",[316,458,459,462],{},[15,460,461],{},"零门槛","：不需要安装任何东西，打开浏览器就能用",[11,464,465],{},"对于初学者来说，这种即时反馈特别重要——你可以直观地看到哪里匹配了、哪里没匹配，而不是靠猜。",[27,467,468],{"id":468},"几个写正则的小技巧",[313,470,471,477,489,502],{},[316,472,473,476],{},[15,474,475],{},"从简单开始，逐步扩展","。先写能匹配核心部分的 pattern，验证通过后再加约束。",[316,478,479,37,482,485,486,37],{},[15,480,481],{},"注意特殊字符要转义",[79,483,484],{},". * + ? ( ) [ ] { } ^ $ |"," 在正则里都有特殊含义，要匹配字面值时需要加 ",[79,487,488],{},"\\",[316,490,491,37,494,497,498,501],{},[15,492,493],{},"用锚点控制匹配范围",[79,495,496],{},"\\d+"," 会匹配字符串中任意位置的数字，",[79,499,500],{},"^\\d+$"," 才能保证整个字符串都是数字。",[316,503,504,507,508,511],{},[15,505,506],{},"用捕获组提取内容","。用 ",[79,509,510],{},"()"," 括起来的部分，可以在代码里单独提取，非常适合从字符串中解析结构化数据。",[513,514],"hr",{},[11,516,517],{},"正则表达式是熟能生巧的技能。不需要把所有语法背下来，理解核心概念后，边查边用就好。",[11,519,520],{},[521,522,524],"a",{"href":523},"\u002Fzh\u002Ftools\u002Fregex-tester",[15,525,526],{},"立即使用 ujiffy 正则测试工具 →",[11,528,529],{},"粘贴你的测试文本，输入 pattern，匹配结果实时高亮——不用注册，不用安装，直接开始。",{"title":308,"searchDepth":531,"depth":531,"links":532},2,[533,534,541,546,547],{"id":29,"depth":531,"text":30},{"id":46,"depth":531,"text":46,"children":535},[536,538,539,540],{"id":53,"depth":537,"text":53},3,{"id":147,"depth":537,"text":147},{"id":213,"depth":537,"text":213},{"id":258,"depth":537,"text":258},{"id":293,"depth":531,"text":294,"children":542},[543,544,545],{"id":297,"depth":537,"text":298},{"id":355,"depth":537,"text":356},{"id":395,"depth":537,"text":396},{"id":423,"depth":531,"text":424},{"id":468,"depth":531,"text":468},"正则表达式新手？学习核心语法、邮箱\u002FURL\u002F电话号码等常用模式，并在线即时测试——无需安装任何工具。",false,"mdx","zh",{},true,"\u002Fblog\u002Fzh-regex-tester-guide-for-beginners","2025-05-15","regex-tester",{"title":5,"description":548},"blog\u002Fzh-regex-tester-guide-for-beginners",[560,17,561,562],"正则表达式","开发者工具","入门教程","ewmfAC2Oiwvqg2X27IPikbPzMfSHup_i4HF4zLgM-Vc",1778839887249]