【问题标题】:Regular expression for signs which depends alphanumeric取决于字母数字的符号的正则表达式
【发布时间】:2016-09-03 02:22:11
【问题描述】:

该行应该是:

  • 包含字母数字、点号 . 和减号 -、空格、下划线、斜线
  • 如果没有字母数字,则正则表达式应返回 false

我写了以下Regex 模式:

string pattern = @"^[a-zA-Z0-9._\+\-\/\s]+$";

第二个条件不满足:

string s1 = "."; // or dot, space, underscore, slash  

// Compare a string against the regular expression
var isOK = new Regex(pattern).IsMatch(s1); // true, but I would like to be false

您能告诉我创建Regex 模式的正确方法吗?

【问题讨论】:

  • ^(?=.*[a-zA-Z0-9])your regex here 或者,(?=.*[\p{L}\p{N}])

标签: c# regex


【解决方案1】:

首先,有一个字符集,包含[a-zA-Z0-9_] - \w。其次,您不需要转义字符集中的+

至于实际的解决方案,您可以只使用positive lookahead 来保证在字符串中的某个字符(.*)之后的某个位置至少存在一个这样的字符:

@"^(?=.*[a-zA-Z\d])[\w.+\-\/\s]+$"

【讨论】:

  • 太棒了!非常感谢! :)
  • 仅供参考:转义 / 符号是没有意义的,因为它不是特殊的正则表达式元字符和 no regex delimiters are necessary (and allowed) when defining C# regex(在类似 Perl 的正则表达式中,/ 是常用的正则表达式分隔符)。所有修饰符都作为标志传递给正则表达式方法,或者使用内联版本,至于操作,只有 Regex 类中的特定方法。
猜你喜欢
  • 2019-11-12
  • 2013-01-06
  • 1970-01-01
  • 2017-04-30
  • 2015-10-29
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多