我收到了远程服务的请求,该服务为我提供了具有以下模式的字段:
[a-zA-Zа-яА-ЯёЁ'+-]{1,100}
[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}
方括号中包含允许的符号。大括号中包含最小和最大符号。
所以我有字段和它们的模式。
如何通过传入模式验证输入的数据?
我收到了远程服务的请求,该服务为我提供了具有以下模式的字段:
[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("$☛☛"));
根据您的情况,您可能需要在模式中添加“^”和“$”。
一个简单的例子:
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 正则表达式来解决这个问题。
你可以这样做
"some test".match(/[a-zA-Zа-яА-ЯёЁ'+-]{1,100}/)
返回 ["some"]
或者
/[a-zA-Zа-яА-ЯёЁ'+-]{1,100}/.test("some test")
返回真