连字符的正则表达式

时间:2013-11-17 18:16:46

标签: python regex

我正在寻找一个正则表达式来匹配至少有一个数字,一个字母(a-zA-Z)和至少一个连字符的单词(其中没有空格)。总大小应在4到40之间。

示例:

你怎么样h9-11c 匹配 h9-11c

foo 79d-11c-afac bar 匹配 79d-11c-afac

foo d-c-afac bar 不匹配 - 没有数字

到目前为止,我已经想出了这个:

\b(?=.*\d)(?=.*[a-zA-Z])(?=.*-).{4,40}\b

但它只匹配一个单词(它有点贪心)

1 个答案:

答案 0 :(得分:7)

使用\S匹配非空白字符。

此外,\b匹配字母字符的边界,但您已将您的字词定义为任何非空格。

(?<!\S)(?=\S*\d)(?=\S*[a-zA-Z])(?=\S*-)\S{4,40}(?!\S)