我正在用PHP编写一个应用程序,需要测试一个字段以获得正确的凭证代码。凭证条目可以是三种模式之一。我不擅长表达,所以希望得到一些专家的帮助。
这三种模式是: 1000150000(任意10位数) 12345678(任意8位数字) 3JFK-TAB-CDEFG(首先发现一个数字,其余为alpha。有或没有连字符)
我在想,因为这三个凭证条目是如此不同,可能需要在三个不同的IF语句中完成。
感谢您的帮助! 瑞克
答案 0 :(得分:4)
答案 1 :(得分:0)
(\d{10})?(\d{8})?(\d[a-zA-Z-]+)?
这将创建三个可选组1-3,它们将捕获任何10个数字(组1),任何8个数字(组2)或数字后跟字母字符,带或不带连字符(组3)。 / p>
以下是regex101上the expression的链接。
答案 2 :(得分:0)
您可以使用:
/^[0-9](?:[0-9]{7}(?:[0-9]{2})?|[A-Z]*(?>-[A-Z]+)*)$/
这种模式的主要兴趣是:
9ABCD-EFGH-
(以连字符结尾) 答案 3 :(得分:-1)
或者你可以使用交替。也就是说,写下三个正则表达式并将它们与|一起串起来标志意思是“匹配其中一个”。
所以
/[^...$]|\d|Z$/
(即三个字符或包含数字或以Z结尾。)