检查字符串是不是以正则表达式数字开头

Posted

技术标签:

【中文标题】检查字符串是不是以正则表达式数字开头【英文标题】:Check if string starts with Regex number检查字符串是否以正则表达式数字开头 【发布时间】:2017-07-24 15:44:36 【问题描述】:

我对正则表达式真的很陌生,所以我正在寻找一种方法来检查我的字符串是否以某个正则表达式开头。我在 Internet 上找到了 this,但是,我无法使用自定义正则表达式。

我需要知道特定行是否以

开头
3.3. XXX

这是您格式化德国日期的方式。所以正则表达式不需要只查找这个,但可能

17.4. XXX

在这两种情况下,我都需要知道输入字符串是否以日期开头(如上所述,它可以有两种可能的符号)。因此,对于两者它都会返回 true,但是,它不会:

15G

(例如)。

哪个正则表达式适合这个?

【问题讨论】:

如果要解析日期,最好使用Parse或其overload。 为什么说是时间,最后却说字符串以日期开头? @LưuVĩnhPhúc 我写错了。我编辑了帖子。 @revo 这在问题中有所说明。 【参考方案1】:

如果你想要一个正则表达式来检测 dd.mm 类型的日期,这是你的答案。

string testregex = "([0-2][0-9]|3[0-1]|[0-9])(.)(0[1-9]|1[0-2]|[0-9])(.)";

您可以检查任何字符串以查找此正则表达式的匹配项,Regex.IsMatch() 返回 true 并且 if 块中的语句将执行。

string text="17.4 xxxxxx";
if (Regex.IsMatch(string test,testregex))

  //do something

【讨论】:

give me more clear details in comments”。不要这样做,请尝试使用所有相关详细信息和示例来更新您的问题。 当然,每个正则表达式问题都应该至少有几个例子说明什么应该通过,什么应该失败,以及为什么。也可以在更新问题后回复问题已更新的答案。 我可以看到你 put17.4 但不是17.4.,这是必需的。如我所见,正则表达式末尾缺少点 (.)。你打算这样做吗?无论如何感谢您的回答。 目标字符串的末尾是否总是有一个点(.)?如果是,请通知我,以便我在答案中编辑正则表达式。 @AliCrash 是的,也可能是24.12.,但最后一个点总是在那里。【参考方案2】:

正则表达式不擅长解析数字范围,因此会变得非常混乱https://***.com/a/15504877/1383168

要检查字符串是否为有效日期,您可以使用DateTime.TryParseExact

string s = "17.4. XXX"; DateTime d;

if (DateTime.TryParseExact(s.Split(' ')[0], "d.M.", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out d)) 

    // matches
    Debug.Print($"d"); // "4/17/2017 12:00:00 AM"

【讨论】:

非常好的和干净的解决方案,适用于所有日期,不需要手动正则表达式检查。谢谢!

以上是关于检查字符串是不是以正则表达式数字开头的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:数字开头中间字母结尾数字

Java 判断以数字开头的字串的正则表示式怎么写?

求一个正则表达式: 以英文字母开头,只能包含英文字母、数字、下划线

字符串的正则表达式以数字开头,后跟 + 字符

Linux Shell正则表达式如何匹配1~3位数字

正则表达式,由英文字母和数字组成的4-16位字符,以字母开头,怎么写