求JavaScript正则表达式:禁止字母与数字直接拼接,需用连字符分隔
JavaScript正则表达式:禁止字母与数字直接拼接,需用连字符分隔
这里提供一个符合需求的正则表达式,确保字符串中字母与数字不会直接相邻,必须通过连字符-连接:
const validPattern = /^(?:[A-Za-z]+|\d+|[^A-Za-z\d]+)(?:-(?:[A-Za-z]+|\d+|[^A-Za-z\d]+))*$/;
正则规则解释:
^和$:锚定字符串的开头和结尾,确保整个字符串都符合规则,避免部分匹配(?:[A-Za-z]+|\d+|[^A-Za-z\d]+):定义单个合法的"段",支持三种类型:[A-Za-z]+:一个或多个纯字母\d+:一个或多个纯数字[^A-Za-z\d]+:一个或多个非字母非数字的字符(比如示例中的***)
(?:-(?:[A-Za-z]+|\d+|[^A-Za-z\d]+))*:允许通过连字符连接多个合法段,*表示可以连接0个或多个后续段(即单个合法段也符合规则)
验证示例:
匹配的字符串:
abc-123-123-***→ 符合规则123-abc-abc-***→ 符合规则123-abc-123-***→ 符合规则abc-123-abc-***→ 符合规则abc-efg-***→ 符合规则
不匹配的字符串:
abc123→ 字母与数字直接拼接,不符合123abc→ 数字与字母直接拼接,不符合abc1→ 字母与数字直接拼接,不符合a1b2→ 字母与数字交替直接拼接,不符合
使用方式:
在JavaScript中可以通过test()方法验证字符串是否符合规则:
// 测试匹配案例 console.log(validPattern.test('abc-123-123-***')); // 输出 true console.log(validPattern.test('abc-efg-***')); // 输出 true // 测试不匹配案例 console.log(validPattern.test('abc123')); // 输出 false console.log(validPattern.test('a1b2')); // 输出 false
内容的提问来源于stack exchange,提问作者Pumpkin
相关产品推荐
相关产品推荐

