2013-04-25 21 views
0

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

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

在方括号包含了允许符号。 花括号中包含最小和最大符号。

所以我有领域和他们的模式。

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

+0

你可以使用JavaScript的'.match()'函数并传递它内部的模式。因为你使用正则表达式格式本身,你可以直接在match().eg:-'str.match(/^[A-Z#@,] + $ /)中使用该模式' – dreamweiver 2013-04-25 06:16:42

回答

1

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

例如:

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

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

Live demo

根据你的情况,你可能会想 “^” 和 “$” 添加到该模式。

0

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

你可以像这样

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

返回[ “一些”]

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

返回true

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

+0

非常感谢,一切正常! – user2264941 2013-04-25 06:47:51