动态模式Javascript

动态模式Javascript,javascript,Javascript,我收到一个远程服务的请求,该服务为我提供了如下模式的字段: [a-zA-Zа-яА-ЯёЁ'+-]{1,100} [0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10} 方括号中包含允许的符号。 在花括号中包含最小和最大符号 所以我有字段和它们的模式 如何通过传入模式验证输入的数据?将字符串发送到RegExp构造函数并使用test 例如: string = "[a-zA-Zа-яА-ЯёЁ'+-]{1,100}" pattern = new RegExp(string) alert(pat

我收到一个远程服务的请求,该服务为我提供了如下模式的字段:

[a-zA-Zа-яА-ЯёЁ'+-]{1,100}
[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}
方括号中包含允许的符号。 在花括号中包含最小和最大符号

所以我有字段和它们的模式


如何通过传入模式验证输入的数据?

将字符串发送到
RegExp
构造函数并使用
test

例如:

string = "[a-zA-Zа-яА-ЯёЁ'+-]{1,100}"
pattern = new RegExp(string)

alert(pattern.test("This works, привет, 123"));
alert(pattern.test("$☛☛"));


根据您的情况,您可能需要在模式中添加“^”和“$”。

您应该使用JavaScript正则表达式来解决这个问题

你可以这样做

"some test".match(/[a-zA-Zа-яА-ЯёЁ'+-]{1,100}/)
返回[“some”]

它返回true

一个简单的示例:

var s = "hello123";

var r1 = "[a-zA-Zа-яА-ЯёЁ'+-]{1,100}"; // the pattern you were given
var reg1 = RegExp("^" + r1 + "$");     // the pattern enclosed in `^` `$`

var r2 = "[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}";
var reg2 = RegExp("^" + r2 + "$");

alert(reg1.test(s)); // false
alert(reg2.test(s)); // true
正则表达式具有您提到的模式,但包含在
^
$
之间,表示“整个表达式”。第一个表达式失败,因为
s
中有一个不允许的数字。第二个表达式传递-它只有数字和字母,总共2到10个字符。

您可以使用javascript的
.match()
函数传递其中的模式。由于模式本身是正则表达式格式,因此可以直接在match()中使用它。例如:-
str.match(/^[A-Z#@,]+$/)
var s = "hello123";

var r1 = "[a-zA-Zа-яА-ЯёЁ'+-]{1,100}"; // the pattern you were given
var reg1 = RegExp("^" + r1 + "$");     // the pattern enclosed in `^` `$`

var r2 = "[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}";
var reg2 = RegExp("^" + r2 + "$");

alert(reg1.test(s)); // false
alert(reg2.test(s)); // true