咨询:JavaScript中类似/|\/\?|/[asd]d++的奇怪语法是什么?
你看到的是JavaScript正则表达式
那串看起来像乱码的符号是正则表达式(RegExp),是JavaScript里专门用来处理字符串匹配、查找、替换的工具——Codewars里很多高手爱用它写极简解法,所以你会经常在顶级答案里见到。
先给你拆解基础逻辑:
- JS里正则的字面量写法就是用
/包裹模式,比如/abc/,开头结尾的/就是正则的边界标记。 - 你贴的例子
/|\/\?|/[asd]d++可能是输入时的格式小问题,正确的应该是类似/\/\?|[asd]d++/的结构,我给你拆解里面的关键符号:\:转义符,把后面的特殊字符变成普通字符。比如\/就是匹配字符串里的/,\?就是匹配普通的?(这俩在正则里有特殊含义,所以要转义)。|:表示“或”的逻辑,比如a|b就是匹配字符串里的a或者b。[asd]:字符集,匹配a、s、d三个字符里的任意一个。+:量词,代表前面的字符至少出现1次;++是ES2018新增的独占量词,匹配时会尽可能多取字符,而且不会回溯调整。
给你举个实际测试的例子,你可以在控制台跑这段代码验证:
// 测试修正后的正则 const regex = /\/\?|[asd]d++/; console.log(regex.test('/?')); // 输出true,匹配到了/? console.log(regex.test('add')); // 输出true,匹配到了ad+ console.log(regex.test('xddd')); // 输出false,x不在字符集里
作为初学者,不用急着啃这种极简写法:
- 先从正则的基础概念入手,搞懂字符集、量词、转义符这些核心内容。
- 遇到看不懂的正则,自己写小代码测试,看它能匹配哪些字符串,反向推导逻辑。
- Codewars的顶级答案很多是为了追求短而写的,先把自己的解法写对、写清楚,再慢慢优化也不迟。
内容的提问来源于stack exchange,提问作者James Fofeh
相关产品推荐
相关产品推荐

