2017-05-26 44 views
0

我需要一個正則表達式允許逗號後的數字。我已經試過,但數後,允許逗號122,,,使用正則表達式後至少允許使用一個數字逗號

我想:
12,323,232,2,232 1,1,1,1,1 123123,23231,2322
我不;噸希望:
12312,,,123,,2,32, 12312,123,12,,,,,123,12

我的代碼是

$(".experience").keyup(function (e) { 
    this.value = this.value.replace(/[^0-9\{0,9}]/g,''); 
}); 
+1

你忘了粘貼正則表達式。 –

+0

你不需要',2'(*起始*逗號),是嗎? –

+0

是的,號碼後我不想要2個或更多的逗號 –

回答

0

如果我的理解你的問題正確,你想刪除任何逗號不成功的號碼,還有刪除數字或逗號以外的任何字符。這很簡單,如果你的語言支持lookbehinds,但是它在JavaScript中也不那麼困難。你可以使用下面的正則表達式匹配任何不正確的逗號,然後用$1

/^,+|(,)+|[^0-9,]+/g 

替換它們替換爲:$1

  • 在開始任何逗號應爲空字符串''
  • 被替換任何連續的逗號,即,+,應該用一個逗號代替,即,
  • 除數字以外的任何字符或逗號應與空字符串''

要結合這兩個規則來代替,^,+|(,)+將有助於同時匹配和替換$1對應於捕獲組1,這將只存在於第二狀態,以便將取代帶逗號的多個逗號,例如(,)+被替換爲(,)。而在第一選擇^,+其在起跑線匹配逗號,有第一個捕獲組仍然是空的,所以它被用空字符串''

這裏更換是一個JS演示:

$(function() { 
 
    $(".experience").keyup(function (e) { 
 
     this.value = this.value.replace(/^,+|(,)+|[^0-9,]+/g,'$1'); 
 
\t }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='experience' name="experience" value=""/>

您可以考慮將keyup更改爲focusout,但這取決於您! :)

Regex101 Demo

+0

'^ \ d +(?:, \ d +)* $'更好。但這是行不通的。 OP在'keyup'事件的'replace'函數中使用它。 –

+0

謝謝,但我應用這個解決方案jquery [fiddler](http://jsfiddle.net/4PuJL/741/)keyup,但它不起作用 –

+0

不工作意味着允許逗號後像數字(1232 ,,,, 123, ,,) –

0

這是你在找什麼?我不習慣使用正則表達式,但設法迅速把它放在一起:

^([0-9]+\,?)*$ 

The questionmark is makes the comma optional. 
[0-9] = numeric values only 
+  = quantifier between 1 and unlimited 
\  = escapes the character, so it's a constant 
*  = quantifier between 0 and unlimited times 

希望這有助於!

Regards

相關問題