我得到了一個遠程服務請求,該服務給我的模式字段如下:動態模式的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