0

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

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

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

但不是这个:

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

4

1 回答 1

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
于 2013-09-23T16:47:48.983 回答