2010-06-24 133 views
2

我要匹配这样的:正则表达式模式

  • 八(8)字母数字字符
  • 其次是 - 连字符
  • 其次是二十二岁(22)字母数字字符,这里就是我想和它不匹配:

[8]\w+-[22]\w+

+0

的'[]'限定[* *字符类**](http://www.regular-expressions.info/charclass.html)。 – 2010-06-24 11:51:31

回答

5

应该是:

\w{8}-\w{22} 

[8]匹配单个字符 - 字面8,和[22]匹配一个字面2.

注意\w也允许下划线。如果这是一个问题,使用

[a-zA-Z0-9]{8}-[a-zA-Z0-9]{22} 

一个很好的提示,从蒂姆,如果你想捕捉目标价从文件或字符串的模式,你可能要添加\b - 单词边界,以避免部分匹配。例如,如果你想要一个2-4格式12-1234,第一parrent将匹配1234-1234567

\b\w{8}-\w{22}\b 
+1

差不多,除了\ w也匹配下划线 – unbeli 2010-06-24 11:50:35

+4

+1,我还建议围绕一切与'\ b'标签只是为了确保。 – 2010-06-24 11:50:59

+0

@Tim - 非常好,比我关于'^ .. $'的评论还好。 – Kobi 2010-06-24 11:57:36

1

你想用

\w{8}-\w{22} 

在大多数的正则表达式语言,\ W意志匹配一个字符。

1

正则表达式语法取决于您使用的语言。

[A-ZA-Z0-9] {8} - [A-ZA-Z0-9] {22}

注意\ W匹配下划线