我在数据库中有许多不同的公司(客户)。每个人都需要一个订单号才能传递给他们。但是他们都希望订单号是数字和字母的不同序列。

因此,在数据库中,我有一列代表此格式。例如
@@@###@@@ => 3 letters, 3 numbers, 3 letters
AB##@@ => 'AB', 2 numbers, 2 letters
###### => 6 numbers
等等

我需要验证这些订单号的用户输入(到文本框),以便它们符合客户对字符串结构的要求。

有什么想法可以用javascript实现吗?有没有我可以使用的函数或库,我可以简单地“插入”从数据库获取的格式,并且它将根据用户输入的字符返回true或false。

一个“固定的”正则表达式很容易,但这是动态的,并且是基于客户的,并且有数百种不同的格式...

任何帮助表示赞赏。

最佳答案

如果@->字母和#->数字是您唯一的特殊情况,则只需将其替换为正则表达式即可。

var formatField = "AB##@#YZ";
formatField = formatField.split('@').join('[a-zA-Z]');
formatField = formatField.split('#').join('[0-9]');

var reg = new RegExp("^" + formatField + "$");
console.log(reg.test("AB12R3YZ")); // true
console.log(reg.test("2312R3YZ")); // false


JSFiddle

09-18 17:36