动态模式Javascript

Dynamics Pattern Javascript

本文关键字:Javascript 模式 动态      更新时间:2023-09-26

我得到了一个远程服务的请求,这个服务给了我一个模式如下的字段:

[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("$☛☛"));

现场演示

根据您的情况,您可能希望在模式中添加"^"answers"$"。

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

你可以这样做

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

返回["some"]

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

返回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个字符之间。