0

我收到了远程服务的请求,该服务为我提供了具有以下模式的字段:

[a-zA-Zа-яА-ЯёЁ'+-]{1,100}
[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}

方括号中包含允许的符号。大括号中包含最小和最大符号。

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

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

4

3 回答 3

1

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

例如:

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

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

现场演示

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

于 2013-04-25T06:19:00.657 回答
0

一个简单的例子:

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 个字符。

于 2013-04-25T06:32:14.553 回答
0

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

你可以这样做

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

返回 ["some"]

或者

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

返回真

于 2013-04-25T06:20:51.810 回答