我在数据库中有许多不同的公司(客户)。每个人都需要一个订单号才能传递给他们。但是他们都希望订单号是数字和字母的不同序列。
因此,在数据库中,我有一列代表此格式。例如@@@###@@@ => 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