You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PeggyJS中校验字符串是否符合混合字母数字要求

你此前使用的正则^[a-zA-Z0-9]*$仅能限制字符串仅由大小写字母和数字构成,无法验证两类字符同时存在,因此达不到预期效果。以下是两种可在PeggyJS中直接使用的实现方案:

方案1:使用带正向预查的正则

PeggyJS完全兼容JavaScript正则语法,你可以直接使用如下正则实现校验:
^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]+$
规则说明:

  • (?=.*[a-zA-Z]):正向预查,要求字符串中至少存在1个大小写字母
  • (?=.*\d):正向预查,要求字符串中至少存在1个数字
  • [a-zA-Z\d]+:限制整个字符串只能由字母和数字组成,且长度至少为1

方案2:纯Peggy语法规则实现

如果你不想依赖正则预查,可以用Peggy原生的规则+语义谓词实现:

// 校验规则:同时包含字母和数字的合法字符串
validAlphaNumString = chars:(alpha / num)+ &{
  const hasAlpha = chars.some(c => /[a-zA-Z]/.test(c))
  const hasNum = chars.some(c => /\d/.test(c))
  return hasAlpha && hasNum
}
alpha = [a-zA-Z]
num = [0-9]

两种方案都完全符合你给出的测试用例要求:

  • 123 应返回 false
  • abc 应返回 false
  • a123 应返回 true
  • 1a23 应返回 true

内容的提问来源于stack exchange,提问作者Benk I

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:36:03