![](/img/trans.png)
[英]How implement regex for a textfield to allow one comma one space at a time in 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.