2013-10-15 36 views
3

我正在使用一個只能接受希伯來字符的輸入字段的ng-pattern。使用ng-pattern(Angular.JS)和unicode字符的不良結果

我已經找出什麼unicode數字希伯來字符。

這是我的模式:

$scope.onlyHebrewPattern = /[\u05D0-\u05F3]+/g; 

我的表單輸入:

<input tabindex=1 type="text" ng-disabled="disableButtons" name="firstname" ng-minlength="2" ng-maxlength="15" ng-model="register.firstName" placeholder="first name" ng-pattern="onlyHebrewPattern" required title="please enter your name"> 

現在對於這種模式會工作,將不填充$ scope.firstname與錯誤的結果最喜歡的輸入: 「A B C D」。

但有些輸入如:「שדas」,由於某種原因被模式接受。

我相信問題依賴於模式定義。有些東西一定是錯的,但我確信u05D0-u05F3真的是我需要的範圍。那麼我的問題在這裏?

+0

看起來像ng-pattern匹配值的開始,而不是整個值。請參閱http://stackoverflow.com/questions/18746913/ng-pattern-for-only-numbers-will-accept-chars-like-in-angular-js – bobince

回答

4

試試這個:

$scope.onlyHebrewPattern = /^[\u05D0-\u05F3]+$/g;

此致以希伯來文字的任何字符串匹配。

+0

看起來像解決了這個問題。 你能解釋爲什麼這個工程? – lobengula3rd

+0

特殊正則表達式字符^和$分別表示「僅在開始時」和「僅在結束時」。您所說的模式「匹配包含(hebrew-char)(一次或多次)的字符串,但」ab(hebrew)「與該描述匹配 - 它包含一個希伯來字符 使用(only-at -start)(希伯來語)(一個或多個)(僅在末尾)強制所有字符都是希伯來語,因爲希伯來字符必須緊挨着開始和結尾,並且不能中間有任何非希伯來字符 –

+0

嘿再次 我不知道爲什麼,但這種模式接縫,因爲它應該不工作 有時輸入是可以的因爲某些原因被拒絕 是什麼原因對於那個? ,如果我想添加選項來放置' - '和''「字符,我將如何將它們添加到正則表達式模式? – lobengula3rd