求验证#分隔1-5数字的JavaScript正则表达式(含规则)
符合需求的正则表达式
直接给出满足所有要求的正则:
^$|^(?=.{1,9}$)[1-5](?:#[1-5])*$
逐部分解释(针对新手)
把正则拆成对应需求的模块,方便理解:
^$:匹配空输入,满足“输入可以为空”的要求。(?=.{1,9}$):正向预查规则,强制整个输入的长度在1-9之间,对应“输入最大长度为9”的限制。^和$锁定字符串首尾,确保长度检查覆盖整个内容。[1-5]:匹配单个1-5的数字,既满足“单个有效数字”的场景,也直接排除了6及以上的无效数字。(?:#[1-5])*:?:表示这是一个非捕获组(仅用于分组,无需单独提取内容)#[1-5]要求#后面必须跟1-5的数字,既实现了“新增数字用#分隔”的规则,也避免了输入以#结尾的情况*表示这个组可以出现0次或多次,支持单个数字、1#2、1#2#3等多种合法格式
示例验证
- 有效输入:
1:匹配单个数字规则,长度符合要求3#4:3+#[4],格式和长度均合法1#5#4:1+#[5]+#[4],符合所有规则1#2#3#4:长度7,在限制范围内1#2#3#4#5:长度9,刚好达到最大限制,合法
- 无效输入:
3#:结尾为#,无后续有效数字,无法匹配规则1#2#3#4#5#1:长度11,超过9的限制,被预查规则拦截6:数字不在1-5范围内,不匹配
内容的提问来源于stack exchange,提问作者user3465008
相关产品推荐
相关产品推荐

