匹配纯数字及含斜杠数字且斜杠后首字符不为0的正则表达式如何编写
符合需求的正则表达式解决方案
你当前写的([0-9]|[\/]|[1-9])只匹配单个字符,且完全没有限制斜杠的出现数量、位置,也没有约束斜杠后的字符规则,因此会出现匹配1212/0这类不符合要求内容的问题。
最终可用正则
^[0-9]+(?:/[1-9][0-9]*)?$
如果不需要使用分组捕获内容,也可以简化为:
^[0-9]+(/[1-9][0-9]*)?$
规则拆解(适合初学者理解)
^:匹配字符串开头,避免目标内容前缀出现多余字符[0-9]+:匹配1个及以上的任意数字,允许数字开头为0,对应全数字的合法场景(/[1-9][0-9]*)?:可选的带斜杠后缀规则/:精确匹配斜杠[1-9]:强制斜杠后的第一个字符必须是1-9的非0数字,直接避免斜杠后开头为0的问题[0-9]*:匹配斜杠后第一个非0数字之后的0个及以上任意数字- 末尾的
?:表示整个斜杠加后缀数字的部分是可选的,同时兼容全数字、带斜杠两种合法场景
$:匹配字符串结尾,避免目标内容后缀出现多余字符
匹配效果验证
- 合法内容可正常匹配:
01212、111/11、12121221/23445 - 非法内容会被拦截:
1212/0、/123、123/、12/012
内容的提问来源于stack exchange,提问作者Akshay Rathod
相关产品推荐
相关产品推荐

