匹配连续字符组的正则表达式及JS匹配/*字符的技术求助
嘿,我来帮你搞定这两个正则表达式的问题!
需求1:匹配连续字符组的正则表达式
首先得明确你说的“连续字符组”具体指哪种场景,不同需求的写法不一样,给你几种常见情况:
- 匹配连续的相同字符(比如"aaa"、"5555"):用
/(.)\1+/g。这里(.)捕获任意单个字符,\1+表示重复捕获到的字符至少1次,g是全局匹配模式。 - 匹配连续的字母(不分大小写):用
/[a-zA-Z]+/g,+表示匹配1个及以上的字母。 - 匹配连续的数字:用
/\d+/g,\d代表数字字符。 - 匹配连续的非空白字符:用
/\S+/g,\S匹配任何非空白字符(包括字母、数字、符号等)。
如果你的“连续字符组”有更具体的定义,可以补充说明,我再调整正则~
需求2:匹配包含
/*的字符串的JavaScript正则 你原来用的/(\b\/*\b)g失效主要有两个原因:
\b是单词边界,但/和*都不属于“单词字符”(单词字符指字母、数字、下划线),所以/*前后根本不会触发单词边界,这个规则完全不适用。\/*的意思是“匹配0个或多个/”,这和你要找的/*组合完全不是一回事。
正确的正则很简单,直接匹配/*这个子串就行,注意在正则里/和*都是特殊字符,需要用反斜杠转义:
- 只需要判断字符串是否包含
/*:用/\/\*/(不需要g模式,test()方法就能判断存在性) - 如果要全局匹配字符串中所有的
/*:用/\/\*/g
给你个JS示例代码验证:
const testCases = ['Hello', '123', '/* HELLo', '/*4534534']; const hasSlashStar = /\/\*/; testCases.forEach(str => { console.log(`${str} → ${hasSlashStar.test(str)}`); });
运行结果会是:
Hello → false 123 → false /* HELLo → true /*4534534 → true
完全符合你的示例要求~
内容的提问来源于stack exchange,提问作者sarsnake
相关产品推荐
相关产品推荐

