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

如何编写正则表达式:首字符禁0和空格,仅允许指定字符集

正则表达式解决方案:满足首字符非0且仅允许指定字符

最终正则表达式

^[1-9A-Za-z\-|/][0-9A-Za-z\-|/]*$

规则拆解

这个正则采用白名单模式,从根源上避免了黑名单模式需逐个排除非法字符的繁琐问题,完全贴合需求:

  1. ^:锚定字符串开头,确保首字符检查生效
  2. [1-9A-Za-z\-|/]:定义首字符的合法范围,包含:
    • 1-9的数字(直接排除首字符为0的情况)
    • 大小写英文字母
    • 特殊字符-、|、/
  3. [0-9A-Za-z\-|/]*:定义后续字符的合法范围,包含所有允许的字符(包括0),*表示可以有0个或多个后续字符(支持单个合法首字符的场景)
  4. $:锚定字符串结尾,确保整个字符串无超出白名单的非法字符

示例验证

符合要求的输入

  • ASDFGHJKLQWERTYUIOPZXCVBNM:首字符为合法字母,后续均为字母,匹配成功
  • SUBSCRIBETOME:同上,匹配成功
  • AHH-HHH01/\-65AHH:首字符合法,后续包含-、/、数字、字母,均在白名单内,匹配成功
  • 1234567890:首字符为1(非0),后续包含0,匹配成功
  • 1:单个合法首字符,匹配成功
  • ||||||||||:首字符为|,后续均为|,匹配成功

不符合要求的输入

  • :全为空白字符,不在白名单内,匹配失败
  • 0:首字符为0,匹配失败
  • !:!不在白名单内,匹配失败
  • 0123456789:首字符为0,匹配失败
  • !@#$%^&*():全为非法字符,匹配失败
  • {}"::全为非法字符,匹配失败

对之前尝试的问题分析

你之前的黑名单模式^[^0\S][\\\-/]*\w*\S*$存在逻辑错误:

  • [^0\S]实际含义是“匹配不是0且不是非空白的字符”,也就是仅允许空白字符或除0外的任意字符,完全违背了排除非法字符的需求,导致!这类字符能通过匹配。
  • 后续的\S*还会允许所有非空白字符,进一步扩大了非法字符的匹配范围。

白名单模式只允许明确指定的字符,从根本上杜绝了非法字符的匹配,同时通过单独定义首字符范围,轻松实现了“首字符非0”的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:25:27