Regex 如何在Extjs中为textfield实现正则表达式以允许一个逗号一个点
我正在处理一个文本字段,使其在任何情况下都只允许出现最大值为一个逗号和一个点(最大值)的数字。它可以接受像“9.8,8.6”这样的值。一次不允许有两个或多个点或逗号 我试过下面的代码,但它不工作Regex 如何在Extjs中为textfield实现正则表达式以允许一个逗号一个点,regex,extjs,extjs6.5,Regex,Extjs,Extjs6.5,我正在处理一个文本字段,使其在任何情况下都只允许出现最大值为一个逗号和一个点(最大值)的数字。它可以接受像“9.8,8.6”这样的值。一次不允许有两个或多个点或逗号 我试过下面的代码,但它不工作 this.regex = new RegExp('[\d,]\.?[\d,]*$'); 您当前的模式有很多可选部分。例如,它还允许使用一个逗号 如果最大值在逗号前后仅为1个逗号和每个数字1个点,则可以将其设置为可选: ^(?:\d+(?:\.\d+)?|\.\d+)(?:,(?:\d+(?:\.\d+
this.regex = new RegExp('[\d,]\.?[\d,]*$');
您当前的模式有很多可选部分。例如,它还允许使用一个逗号 如果最大值在逗号前后仅为1个逗号和每个数字1个点,则可以将其设置为可选:
^(?:\d+(?:\.\d+)?|\.\d+)(?:,(?:\d+(?:\.\d+)?|\.\d+))*$
字符串的开头^
匹配1+个数字\d+
匹配0+乘以一个点和1+个数字(?:\。\d+)*
非捕获组(?:
匹配逗号、1+位和可选的点和1+位,\d+(?:\。\d+)
关闭组并将其设置为可选)?
字符串结尾$
let regex=new RegExp('^(?:\\\.\\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);
});代码>感谢您的快速回复,我是否需要像这样使用它“@this.regex=new RegExp('^\d+(?:\。\d+)(,\d+(?:\。\d+)))?”;@SunilBamal我添加了一个您可以如何使用它的示例。您还必须对反斜杠进行双重转义。@SunilBamal我已经更新了示例,当您使用*
而不是?
时会这样做?
谢谢@the,它对值“8.2,9”无效,但对所有十进制值都非常有效,它也可以是没有十进制的数字,请建议,甚至对“5,9”无效谢谢@this.regex=regex=newregexp(“^(?:\\d+(?:\\d+)?\\d+(:?,?:\\d+(?:\\d+))));这对我很有用你很棒。。
this.regex = new RegExp('^(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:,(?:\\d+(?:\\.\\d+)?|\\.\\d+))*$');