使用正则表达式检查数字是否存在,是否以特定的模式存在



我想检查字符串是否包含dddd-dd-dd格式的数字。我对检查有效日期不感兴趣。

例子:

  • 输入:att_token_2015-09-02

    期望输出:True

  • 输入:att_token_1234-99-99

    期望输出:True

  • 输入:att_token_1234

    期望输出:False

EDIT:我没有在任何程序中尝试过这个。我只是想要它的正则表达式模式。

(d+)-(d+)-(d+)

这是我到目前为止所尝试的,它返回给我的数字,但我不知道这是否正确。

d{4}-d{2}-d{2}将匹配yyyy-mm-dd模式中的数字,但它不会匹配日期—例如,它将匹配1234-99-99。您可以使用任何语言访问匹配,并尝试对匹配进行日期解析,以查看它是否为日期。

您在示例中使用的是d+,它将匹配类似于33-3333333-333的内容,这不是日期。

如果你担心像123456-12-1234567这样的字符串在不匹配的时候匹配,你可以使用负的遍历:

(?<!d)d{4}-d{2}-d{2}(?!d)

查看实际示例:https://regex101.com/r/nR0hB2/1

相关内容

最新更新