Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在Extjs中为textfield实现正则表达式以允许一个逗号一个点_Regex_Extjs_Extjs6.5 - Fatal编程技术网

Regex 如何在Extjs中为textfield实现正则表达式以允许一个逗号一个点

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+

我正在处理一个文本字段,使其在任何情况下都只允许出现最大值为一个逗号和一个点(最大值)的数字。它可以接受像“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+位
  • )?
    关闭组并将其设置为可选
  • $
    字符串结尾

您的代码可能如下所示(请注意双重转义反斜杠)

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+))*$');