2017-04-26 25 views
2

我需要在文本框中輸入正負值。我使用角度js進行了下面的驗證。 但是,當用戶輸入零時,用戶可以輸入它沒有加號或減號。 在我的解決方案中,用戶無法在沒有加號或減號的情況下輸入零。 如何讓零類型不帶加號或減號符號。如何使用加減負值角度js驗證texbox

<input name="temperature" type="text" class="form-control" ng-maxlength="3" 
ng-model="eletctyDetail.temperatureValue" ng-required="true" 
ng-pattern="/^[-+]\d+(\.\d+)?$/" ng-pattern-err-type="tempPattern" /> 
+0

您爲什麼接受不起作用的解決方案?看,如果你不想讓用戶在前面用'+'或'-'輸入0,可以使用['/ ^(0 | [+ - ] [1-9])\ d *(\。 \ d +)?$ /'](https://jsfiddle.net/kkjhujhb/)。 –

回答

1

你的模式 - /^[-+]\d+(\.\d+)?$/ - 匹配的強制性起始位置的-+。然後,\d+匹配任意一個或多個數字。

現在,你只需要匹配0+/-隨後從1到後9範圍內的任何數字。那就是你需要使用替代的地方:(0|[-+][1-9])

整個正則表達式看起來像

ng-pattern="/^(0|[+-][1-9])\d*(\.\d+)?$/" 

regex demo

如果您需要-/+可選擇使用

ng-pattern="/^(0|[+-]?[1-9])\d*(\.\d+)?$/" 
        ^

圖案的詳細資料

  • ^ - 字符串的開始
  • (0|[+-][1-9]) - 一個0+/-接着用一個數字從19範圍(所以,-+只有在1-9前面是強制性的)(注:如果您使用[-+]?,加或減將成爲可選的,因爲?比賽1或0次)
  • \d*(\.\d+)? - 0+數字(注意在圖案中的+變得*,由於第一數字已經與一個交替組消耗的)中,隨後用的. + 1或多個數字
  • $可選序列 - 字符串的結尾。
+1

謝謝你已經完美!! – user1177842

+0

由於錯字,我修改了一些解釋,請參閱「so,'-'或'+'必須在*'1-9'前面)(注意:如果你使用' [ - +]?',因爲'?'匹配1或0個匹配項,所以加號或減號將變爲可選項)*「 –

1

這個怎麼樣

<input name="temperature" type="text" class="form-control" ng-maxlength="3" 
ng-model="eletctyDetail.temperatureValue" ng-required="true" 
ng-pattern="^[-+]?[0-9]*\.?[0-9]+$" ng-pattern-err-type="tempPattern" /> 

Check this fiddle

+0

太棒了!非常感謝你 !! :) – user1177842

+0

很高興幫助你。 – jitender

+0

號碼必須以正號或負號輸入。但沒有+, - 可以輸入零。你能幫我先生嗎? – user1177842