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

时间:2015-07-30 08:48:24

标签: 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#

2 个答案:

答案 0 :(得分:8)

查看Regular Expression Language - Quick Reference,字符类的部分。

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

要匹配空格,您可以使用\s

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

答案 1 :(得分:2)

您可以使用\w而不是\d,这意味着数字可以使用正则表达式

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

您无需检查“字词”,这就是\w所做的