2013-04-25 58 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