我正在寻找一个数字和字母组合的perl正则表达式,允许空格和“/”和“ - ”字符作为可能的分隔符。
基本上,我希望它匹配包含字母和数字和/或分隔符组合的表达式,如下所示:
ATG567A
ATG56-7A
ATG56 / 7A
ATG56 7A
但不是这样:
ATG-A< ----仅限字母和/或分隔符 567/7< ----仅数字和/或分隔符
答案 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