我正在使用MVC 3和knockoutjs庫的應用程序。另外我正在研究淘汰賽驗證插件。我需要驗證允許的符號的輸入文本值。據我所知,這些都沒有原生規則,所以我將不得不創建一個自定義規則。壞消息是我在正則表達式和javascript方面的知識很差。我需要編寫一個驗證文本框輸入字段並且不允許非英文字符的自定義函數。所有其他符號都是允許的。我想我將能夠創建自定義規則,但我需要驗證輸入字段的正則表達式。任何幫助工作的例子將不勝感激。謝謝!使用knockoutjs驗證非英文字符輸入文本框的自定義規則
2
A
回答
2
不允許非英語字符
和
所有其他符號都是允許
似乎矛盾的我,但我會盡力幫助: )
首先你應該考慮使用Ajax進行驗證,因爲服務器端語言通常對Unicode有更好的支持。如果它不是一個選項,那麼首先添加XRegExp圖書館與Unicode plugin到您的網頁。
要創建一個支持Unicode的正則表達式使用以下格式:
var englishLettersOrSymbols = XRegExp('[\\p{^Letter}\\p{Latin}]*');
在這裏,我們說,我們接受零個或幾個(... *
)符號,每個符號是([ ... ]
)非字母(\\p{^Letter}
)或基本拉丁字母(\\p{Latin}
)的信件。
現在您的自定義的驗證規則是這樣的:
ko.validation.rules['englishLettersOrSymbols'] = {
validator: function(value){
var rule= XRegExp('[\\p{^Letter}\\p{Latin}]*');
return rule.test(value);
},
message: 'Sorry, {0} this is not valid'
};
,你會用它在你的代碼是這樣的:
var vewModel = {
// ...
myField: ko.observable().extend({englishLettersOrSymbols: true}),
// ...
};
編輯:從正則表達式中刪除|
。謝謝,@slevithan。這不是一個錯誤本身因爲\\p{^Letter}
已經包含|
符號,因此,正則表達式仍然有效。但是,這是相當具有誤導性的。
相關問題
- 1. knockoutjs與自定義jQuery驗證規則
- 2. 如何使用許多規則驗證自定義輸入
- 3. 允許在文本框中輸入非英文字符
- 4. 自定義驗證規則
- 5. 使用jQuery驗證輸入文本遵循不同的規則
- 6. jquery驗證:自定義驗證規則
- 7. wix使用自定義操作來驗證文本輸入
- 8. 輸入文本框驗證
- 9. 文本框輸入驗證
- 10. 驗證文本框輸入
- 11. JQuery規則不驗證輸入文件
- 12. 如何驗證我使用jquery規則在文本框中輸入的年份?
- 13. jquery驗證自定義文件輸入
- 14. 在文本框上自定義驗證
- 15. WPF驗證ErrorTemplate自定義文本框
- 16. 文本框自定義驗證
- 17. 通過androidviewclient輸入非英文字符
- 18. 如何在輸入文本框中輸入非英文語言?
- 19. 如何驗證限制用戶輸入的文本框|字符
- 20. 非英文文本的自定義字體
- 21. 文本框字符驗證
- 22. CakePHP中的自定義驗證規則
- 23. 用於驗證輸入的文本框的正則表達式
- 24. 如何驗證文本的唯一性,英文字符和非英文字符jquery validater
- 25. 驗證非英文域名
- 26. 驗證文本框中輸入的文本是否爲數字
- 27. 自定義輸入文本框
- 28. 自定義輸入文本框
- 29. Android的 - 文本輸入,不具有自定義驗證插件
- 30. joomla文件上傳的自定義驗證規則
我的意思是允許所有其他符號。謝謝安德魯的迴應。我想知道爲什麼我應該使用XRegExp庫?我現在正在閱讀test()方法的規範,如果我只通過模式化允許的符號並檢查它們是否匹配,這將完成這項工作。 – Mdb
就像我說默認JavaScript正則表達式不支持Unicode。因此,如果沒有XRegExp,我就不能編寫'\\ p {^ Letter}'。花括號中的這些名稱是Unocode類的名稱,而JavaScript正則表達式引擎根本不知道它們。 –
@Andrew,你不應該在字符類中加入'|'來表示「或」。它沒有。你正在做的只是將豎線添加到角色類可匹配的角色列表中。即,'[a | b]'相當於'(?:a | b | \ |)'。 – slevithan