c# - 正则表达式无法检测到,(逗号)
问题描述
我正在尝试验证日期字符串,为此我编写了以下正则表达式字符串
[0-3]*\d{1}(st|nd|rd|th)?[\s\-\/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d{1})[\s\-\/,]?(\d{4}|\d{2})
我的正则表达式的字符串输入是"31st March, 2018"
我已经,
在我的正则表达式字符串([\s\-\/,]
部分)中包含(逗号字符),但上面的输入无法验证。
谁能指出上面的正则表达式字符串需要什么更正,以便它可以检测字符串中的,
(逗号)字符?
解决方案
您缺少逗号和年份之间的空格。你应该添加 \s? 在匹配逗号的块之后。
[0-3]?\d{1}(st|nd|rd|th)?[\s\-\/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d{1})[\s\-\/,]?\s?(\d{4}|\d{2})
此外,您不需要在[]中转义字符,或者指定一个量词以仅匹配一个字符,因此您只需将您的正则表达式更改为:
[0-3]?\d(st|nd|rd|th)?[ -/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d)[ -/,]?\s?(\d{4}|\d{2})
PS:我不太了解 C#,所以不能代表其他人推荐使用 Datetime,但听起来可能值得一试。
推荐阅读
- reactjs - react-sizeme 不测量组件的高度
- design-by-contract - 是否可以在编译时强制执行按合同设计的检查?
- python - 使用 Amazon EC2 运行多个 Python/FORTRAN 代码以进行科学计算
- c - 是否有可能拥有一个也是 CPython 模块的独立程序?
- mysql - MySQL表被指定了两次?
- python - 这个简单的加密和解密程序有什么问题?
- sql - 使用在查询中创建的新列进行过滤
- c - 为什么我的删除节点功能不适用于二叉搜索树?
- python-3.x - Python 类型提示:自引用类型检查
- python-3.x - 在请求中运行后台异步任务而不在 pytest-sanic 中关闭事件循环