C# 为什么这个正则表达式匹配?

C# 为什么这个正则表达式匹配?,c#,regex,C#,Regex,我已经编写了一个正则表达式来匹配以下条件 任意数字(0-9) 连字符 空白 以任何顺序 长度在10到25之间 ([0-9\-\w]{10,25}) 我正在使用它来检测支付卡号,因此它可以: Regex.IsMatch("34343434343434", "([0-9\\-\\w]{10,25})"); // true 但这同样有效: Regex.IsMatch("LogMethodComplete", "([0-9\\-\\w]{10,25})"); // true 我做错了什么 这是C

我已经编写了一个正则表达式来匹配以下条件

  • 任意数字(0-9)
  • 连字符
  • 空白
  • 以任何顺序
  • 长度在10到25之间
([0-9\-\w]{10,25})

我正在使用它来检测支付卡号,因此它可以:

Regex.IsMatch("34343434343434", "([0-9\\-\\w]{10,25})"); // true
但这同样有效:

Regex.IsMatch("LogMethodComplete", "([0-9\\-\\w]{10,25})"); // true
我做错了什么

这是C#

请看一看,部分字符类

\w
匹配任何单词字符,包括下划线,而不是空格

要匹配空白,可以使用
\s

要匹配数字,可以使用
\d

查看节字符类

\w
匹配任何单词字符,包括下划线,而不是空格

要匹配空白,可以使用
\s


要匹配数字,您可以使用
\d
而不是
\w
您可以使用
\d
,这意味着您可以像regex一样使用数字

"[\d\-\s]{10,25}" to match your criteria

您不需要检查“单词”,这就是
\w
所做的

而不是使用
\w
您可以使用
\d
,这意味着您可以像regex一样使用数字

"[\d\-\s]{10,25}" to match your criteria

您不需要检查“单词”,这就是
\w
所做的

尝试
[0-9\\s-]
,因为
\w
是单词。元字符匹配任何“单词字符”。您需要使用\s元字符来匹配任何“空白字符”。请尝试
[0-9\\s-]
,因为
\w
是word。该\w元字符匹配任何“word字符”。您需要使用\s元字符来匹配任何“空白字符”。您需要将\加倍,并且您可以在类的开头或结尾处放置-以便不必转义。或者您可以使用
@
我只是pust regex而不转义;)但是感谢您的通知。您需要将\加倍,并且您可以在类的开头或结尾处放置-以便不必转义。或者您可以使用
@
我只使用正则表达式而不转义;)但是谢谢你的通知。