Perl正则表达式用于数字/字母组合

时间:2013-09-23 16:06:57

标签: regex perl

我正在寻找一个数字和字母组合的perl正则表达式,允许空格和“/”和“ - ”字符作为可能的分隔符。

基本上,我希望它匹配包含字母和数字和/或分隔符组合的表达式,如下所示:

ATG567A
ATG56-7A
ATG56 / 7A
ATG56 7A

但不是这样:

ATG-A< ----仅限字母和/或分隔符 567/7< ----仅数字和/或分隔符

1 个答案:

答案 0 :(得分:2)

如果您正在尝试验证字符串,则将其作为多个检查更简单。

m{^[A-Za-z0-9 /-]*\z} && /[A-Za-z]/ && /[0-9]/

这些可以组合成一种模式,但我建议反对它。

m{^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9 /-]*\z}s

另一方面,如果您尝试从字符串中提取,则需要以下内容:

m{
   [ /-]*+
   (?:   [A-Za-z] [A-Za-z /-]*+ [0-9]
   |     [0-9]    [0-9 /-]*+    [A-Za-z]
   )
   [A-Za-z0-9 /-]*+
}x