簡體   English   中英

如何在Extjs中為文本字段實現正則表達式以一次允許一個逗號一個點

[英]How implement regex for a textfield to allow one comma one dot at a time in Extjs

我正在一個文本字段上進行操作,以使其在任何情況下僅允許最大為一個逗號和一個點(最大)的數字。 它可以接受“ 9.8,8.6”之類的值。 它不應一次允許兩個或多個點或逗號。

我試過下面的代碼,但它不起作用。

this.regex = new RegExp('[\d,]\.?[\d,]*$');

您當前的模式有很多可選部分。 例如,它還將允許使用單個逗號。

如果最大值僅是1個逗號,並且每個數字在逗號之前或之后是1個點,則可以將其設為可選:

^(?:\d+(?:\.\d+)?|\.\d+)(?:,(?:\d+(?:\.\d+)?|\.\d+))*$
  • ^字符串開頭
  • \\d+匹配1個以上的數字
  • (?:\\.\\d+)*匹配0+次一個點和1+個數字
  • (?:非捕獲組
    • ,\\d+(?:\\.\\d+)匹配逗號,1 +位數字和可選的點和1+位數字
  • )? 關閉組並使其可選
  • $字符串結尾

正則表達式演示

您的代碼可能看起來像(請注意,兩次轉義反斜杠)

this.regex = new RegExp('^(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:,(?:\\d+(?:\\.\\d+)?|\\.\\d+))*$');

 let regex = new RegExp('^(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(?:,(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+))*$'); [ "9.8,8.6", "9.8", "8.2,9", "5,9", "9.8,8.6,1.1", "1,8.6", "9.8,8.6,1.1", "8,8,8", "9.8,8,8", "1,1", "1,1,.1,1", ].forEach(s => { console.log(s + " ==> " + regex.test(s)); }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM