【问题标题】:Regex not detects the field is null or have white space [closed]正则表达式未检测到字段为空或有空格[关闭]
【发布时间】:2017-09-26 11:13:03
【问题描述】:

我在 c# 中使用正则表达式来验证字段(不是 null 或空格),这意味着字段必须包含一些值,甚至是单个字符。 由于某种原因,我必须使用 REGEX 它是强制性的。 我的正则表达式是

^[a-zA-Z0-9]+$

【问题讨论】:

  • 正则表达式无法检测到 null。如果您的意思是必须至少有 1 个非空白,请使用 @"\S" 或 - 如果您需要匹配整个字符串,请使用 ^\s*\S.*$^\s*\S[\s\S]*$(?s)^\s*\S.*$。请说明你在做什么。
  • 为什么不使用string.IsNullOrWhiteSpace(string s)
  • 我必须使用正则表达式。
  • @UzairXlade 你应该解释一下用例。为什么“必须”?
  • 在您的问题中告诉我们由于某种原因是强制性的并不能真正帮助我们理解为什么我们给出的答案必须包含正则表达式

标签: c# regex


【解决方案1】:

string.IsNullOrWhiteSpace 有一个扩展方法。您想要实现的或多或少正是它所做的。请看here

示例:

string.IsNullOrWhiteSpace(string.Empty); // returns true
string.IsNullOrWhiteSpace(null); // returns true
string.IsNullOrWhiteSpace("   "); // returns true
string.IsNullOrWhiteSpace("ABC"); // returns false

【讨论】:

    【解决方案2】:

    这就是你应该如何检查它的空值、空值还是空格

    var str = "";
    if (!string.IsNullOrWhiteSpace(str) || !string.IsNullOrEmpty(str))
    {
        // then do something here
    }
    

    【讨论】:

    • 如果value参数为nullString.Empty,或者如果value包含仅包含空白字符。”。 IsNullOrEmpty 是多余的。
    • 我只是在看你的例子,认为它比我给出的更优雅。我通常只使用IsNullOrEmpty,很少考虑IsNullOrWhiteSpace,这就是为什么我在上面投了赞成票。
    猜你喜欢
    • 1970-01-01
    • 2012-10-03
    • 2017-10-01
    • 2022-01-23
    • 2013-10-07
    • 2019-08-25
    • 2020-01-03
    • 2015-02-06
    • 2017-08-01
    相关资源
    最近更新 更多