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

时间:2015-09-02 11:56:49

标签: regex

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

示例:

  • 输入:att_token_2015-09-02

    预期输出:True

  • 输入:att_token_1234-99-99

    预期输出:True

  • 输入:att_token_1234

    预期输出:错误

编辑:我还没有尝试过任何程序。我只想要它的正则表达式。

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

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

1 个答案:

答案 0 :(得分:1)

\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