如何编写符合要求的年份验证JavaScript正则表达式?
JavaScript 年份验证正则表达式解决方案
针对你的需求,修正后的正则表达式可以精准匹配有效年份,同时排除所有无效格式:
const yearRegex = /^(?:-[1-9]\d*|[1-9]\d*(?:\s*(?:AD|BC))?)$/;
正则规则说明
^和$:强制匹配整个字符串,避免部分匹配(比如不会误匹配包含有效年份的长文本)-[1-9]\d*:匹配负数年份,要求负号后必须跟至少一个非零数字,直接排除-0这类无效格式|:分支选择,分隔两种合法格式[1-9]\d*:匹配非零正整数(不带纪元标识的情况)(?:\s*(?:AD|BC))?:可选的纪元标识部分:\s*:允许年份和纪元标识之间有任意数量的空格(包括无空格)(?:AD|BC):匹配AD或BC纪元标识?:表示纪元标识是可选的,但仅允许正整数搭配纪元标识(负数不能带AD/BC)
验证示例
- 有效匹配:
2023、300、-1、40AD、40 AD、3000 BC、200BC - 无效匹配(会被排除):
-200AD、-700BC、0BC、0AD、-0、-0BC、-0AD
内容的提问来源于stack exchange,提问作者Greeso
相关产品推荐
相关产品推荐

