Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式:搜索键验证_C#_Regex - Fatal编程技术网

C# 正则表达式:搜索键验证

C# 正则表达式:搜索键验证,c#,regex,C#,Regex,请帮助学习正则表达式。我正在验证字符串。该值不应仅包含%,如果有%,则长度应超过3个字符,包括%。%可以是字符串中的任意位置(包括点) 我可以想出这个。只有当字符串中有%时,才应进行此验证。如果没有%s,则无需验证 @“^[a-zA-Z0-9.]*%”//{3,}$“; 谢谢,纳文 示例: “%”-失败 “%12”-失败 “%123”-通过 “%1234”-通过 “12%3”-通过 “abc%”-通过 “abc”-通过 “A”-通过 “ABC”-通过 我认为这不需要Regex来解决,只需要一些

请帮助学习正则表达式。我正在验证字符串。该值不应仅包含%,如果有%,则长度应超过3个字符,包括%。%可以是字符串中的任意位置(包括点)

我可以想出这个。只有当字符串中有%时,才应进行此验证。如果没有%s,则无需验证

@“^[a-zA-Z0-9.]*%”//{3,}$“;

谢谢,纳文

示例:

  • “%”
    -失败
  • “%12”
    -失败
  • “%123”
    -通过
  • “%1234”
    -通过
  • “12%3”
    -通过
  • “abc%”
    -通过
  • “abc”
    -通过
  • “A”
    -通过
  • “ABC”
    -通过

我认为这不需要
Regex
来解决,只需要一些字符串方法就可以了:

var valid = !input.Contains("%") || input.Length > 3;
如果您想使用
Regex
,这里有:

^([^%]+|.{4,})$

我不认为这需要
Regex
来解决,只需要一些字符串方法就可以了:

var valid = !input.Contains("%") || input.Length > 3;
如果您想使用
Regex
,这里有:

^([^%]+|.{4,})$

如果这就是验证的范围,最好使用
字符串的
Contains(“%”)和
Length属性

return !value.Contains("%") || value.Length > 3;
使用一个正则表达式来测试总长度和其中的模式本身是困难的。如果
%
位于一个固定位置(开始、结束、从开始算起的2rd字符等),它将更适合,但这不是一个用单个正则表达式优雅地解决的问题


这可以用一个丑陋的正则表达式来完成,使用一些lookarounds,但该解决方案不太可能在不同的正则表达式实现之间进行移植(例如,它可能不适用于客户端Javascript验证)。

如果这是验证的范围,最好使用
Contains(“%”)
字符串的
长度
属性

return !value.Contains("%") || value.Length > 3;
使用一个正则表达式来测试总长度和其中的模式本身是困难的。如果
%
位于一个固定位置(开始、结束、从开始算起的2rd字符等),它将更适合,但这不是一个用单个正则表达式优雅地解决的问题


这可以用一个丑陋的正则表达式来完成,使用一些lookarounds,但该解决方案不可能在不同的正则表达式实现之间进行移植(例如,它可能无法与客户端Javascript验证一起工作)。

请在c#中尝试以下表达式:

它与示例中描述的匹配:

  • “%”
    -失败
  • “%12”
    -失败
  • “%123”
    -通过
  • “%1234”
    -通过
  • “12%3”
    -通过
  • “abc%”
    -通过
  • “abc”
    -通过
  • “A”
    -通过
  • “ABC”
    -通过
在同一表达式中使用非捕获、非原子组,以便在javascript中工作(解决Jay的问题):


请尝试使用c#中的以下表达式:

它与示例中描述的匹配:

  • “%”
    -失败
  • “%12”
    -失败
  • “%123”
    -通过
  • “%1234”
    -通过
  • “12%3”
    -通过
  • “abc%”
    -通过
  • “abc”
    -通过
  • “A”
    -通过
  • “ABC”
    -通过
在同一表达式中使用非捕获、非原子组,以便在javascript中工作(解决Jay的问题):


假设验证至少需要1个字符-

 ^(?:[^%]+|.*[^%].*[^%].*[^%].*)$

与JonM相同(但不知道如何删除此项)。

假设验证至少需要1个字符-

 ^(?:[^%]+|.*[^%].*[^%].*[^%].*)$

与JonM相同(但不知道如何删除此内容).

Yes true,其他验证是使用正则表达式属性完成的,因此尝试保持一致。Yes,但是使用正确的工具来完成作业比使用错误的工具并保持一致要好。Yes true,其他验证是使用正则表达式属性完成的,因此尝试保持一致。Yes,但是使用正确的工具更好对于作业,请使用错误的工具并保持一致。验证字符串(如果它包含%),如果是,则字符串的长度应大于3。建议使用检查正则表达式。“%”如何“-通过还是失败?失败,对不起,我没有在示例中给出这个。谢谢大家的回答和建议。按照金和杰伊的说法,他们会尽量保持解决方案的简单。谢谢你,John,这正是我想要的。验证字符串如果包含%,如果是,则字符串长度应大于3。建议使用检查正则表达式。关于“%%%”如何-通过或失败?失败,很抱歉没有在示例中给出此项。感谢所有人的回答和建议。按照金和杰伊的说法,他们会尽量保持解决方案的简单。谢谢你,约翰,这正是我想要的。@Jay Beauty在旁观者眼中;)@情人眼里出西施;)