2016-12-01 78 views
1

我試圖構建一個正則表達式排除kommas和點在輸入(僅數字)。我在一個運行Angular2的Ionic 2應用程序中這樣做,所以我使用了Angular 2 Validators.pattern。 我會假裝正則表達式引擎是JavaScript的一個。正則表達式排除komma和點

我看了一些帖子的正則表達式,並喜歡它,如果你輸入1,2但它不工作1,觸發建立這種模式[^,.]+ 這工作得很好。

1,仍然有效,但我希望它是無效的,就像1,2。那麼我該如何修改我的模式才能獲取x,xx.x也作爲x,x.

很抱歉,如果這個問題有點愚蠢的,但我從來沒有使用正則表達式模式befor並試圖爲3或4個小時,我投降後...

將是巨大的,如果你們中的一些可以幫助我得到這個正則表達式加工。

編輯:

在我的TS文件

this._formValidator = new FormGroup({ 
     inputValidator: new FormControl('', Validators.maxLength(this._maxLength)), 

     inputValidatorInteger: new FormControl('', Validators.compose([ 
      Validators.pattern('[^,.]+') 
     ])) 
}); 

在Valuechange我映射錯誤到正確的錯誤 - 消息並顯示出來。也嘗試登錄任何錯誤,但沒有,如果我輸入1,。如果我輸入類似1,2之類的東西,即使1,,,,,無效,也是無效的。 我需要使用:當我與例如不含1,而不是exluding,其作品像它應該,[^1]+

在我的HTML文件

<ion-item class="listElement" [formGroup]="_formValidator"> 
<ion-input [(ngModel)]="_result.value" type="number" placeholder="Enter Something" formControlName="inputValidatorInteger"></ion-input> 
</ion-item> 

EDIT 2嘗一嘗。那是因爲我需要數字鍵盤才能在智能手機上打開,並且type =「number」。 正則表達式似乎不適用於type =「number」,或者說它不能很好地工作。

+1

只是測試 - 加上'^'和'$'錨:'^[^,。] + $'' –

+0

你的意思是*抓取'x,x','xx'也可以作爲'x,'和'x.' * –

+0

你的模式應該可以工作,看[這裏]( http://plnkr.co/edit/VKuGMI33OkSmvqnEqnCU?p=preview)。 –

回答

0

如果您只是想驗證輸入是否包含,.符號。你可以使用這個正則表達式[.,]。它將匹配任何包含至少一個點或逗號的字符串Example。如果目標是找到任何數量的包含逗號或一個點,你可能會使用類似與此類似

\d*[.,]\d* 

Example

+1

適用於type =「text」但不適用type =「number」 – marvstar

+0

@marvstar這兩種類型有什麼區別?你想達到什麼目的?你想只允許用戶輸入數字嗎?在這種情況下'/^\ d + $ /'。如果你的數字可能包含整數和小數部分'^ \ d + \。?\ d * $'之間的點。如果數字可能包含點和符號'^ [+ - ]?\ d + \。?\ d * $' –