2016-12-01 77 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 * $' –