Regex to validate numbers and forward slashes for date
嗨,我正在为日期mm/dd/yyyy c_编写正则表达式。我有这个
1
| ^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$ |
但不起作用
。
如何做到这一点,它将与2013年3月1日和2013年1月3日一起工作
- "不工作"是什么意思?如果你连问题都不告诉我们,我们该怎么办?
- 如果我像mm/dd/yyyy那样插入日期,它表明它是正确的。
- 使用"或"时,请记住将应与非捕获组结合在一起的单元分组。第二个带圆括号的表达式是匹配零后接1到9的数字,或者匹配10到29或3之间的数字,后跟0或1。
- 那么也许你应该把这个问题提出来?
- 3/1/2013不是mm/dd/yyyy格式。你需要把零放在那里。或者更改regex使零成为可选的。
- 如何做到这一点,它将与3/1/2013和03/01/2013一起工作?
- 使0可选,因此((?:0?[1-9])|(?:1[012]))[- /.]((?:0?[1-9])|(?:[12][0-9])|(?:3[01])).....。
- 请改用datetime.typarseexact。它已经内置了所有的逻辑。
不要使用正则表达式,使用DateTime.TryParse或DateTime.TryParseExact。
还要了解当前的文化和用户的期望。美国人使用"mm/dd/yyyy",但世界其他地区(通常)使用"dd/mm/yyyy",这两个词在大范围的日期中都无法区分。
- 应用程序只在美国使用,我使用的是Ajax数据时间选择器
- 如果您使用的是MS序列化日期的JSON输入,并且未能对值进行胰蛋白酶化,请尝试:stackoverflow.com/questions/1263732/…
我同意你应该使用DateTime方法。但是,如果要使前导零可选,可以在它们后面添加一个?,如下所示:
1
| ^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$ |