我得到了一个远程服务请求,该服务给我的模式字段如下:动态模式的Javascript
[a-zA-Zа-яА-ЯёЁ'+-]{1,100}
[0-9a-zA-Zа-яА-ЯёЁ'+-]{2,10}
在方括号包含了允许符号。 花括号中包含最小和最大符号。
所以我有领域和他们的模式。
如何通过传入模式验证输入的数据?
我得到了一个远程服务请求,该服务给我的模式字段如下:动态模式的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(pattern.test("This works, привет, 123"));
alert(pattern.test("$☛☛"));
根据你的情况,你可能会想 “^” 和 “$” 添加到该模式。
您应该使用JavaScript正则表达式来解决此问题。
你可以像这样
"some test".match(/[a-zA-Zа-яА-ЯёЁ'+-]{1,100}/)
返回[ “一些”]
或
/[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个字符之间。
非常感谢,一切正常! – user2264941 2013-04-25 06:47:51
你可以使用JavaScript的'.match()'函数并传递它内部的模式。因为你使用正则表达式格式本身,你可以直接在match().eg:-'str.match(/^[A-Z#@,] + $ /)中使用该模式' – dreamweiver 2013-04-25 06:16:42