使用javascript验证正则表达式时出现问题

使用javascript验证正则表达式时出现问题,javascript,regex,validation,Javascript,Regex,Validation,我在验证此正则表达式时遇到问题。事实上,该函数的工作原理类似于中间件,用于验证用户输入的数据,用户输入的数据最多可接受逗号后的2位小数 我需要考虑以下示例: 通过: 1.12 10.15 二十 14.1 失败: 10.100 15,10 12e9 任何上面有字母的东西 我的尝试: const validation = (values) => { let errors = {}; let commaValidation = new RegExp("^

我在验证此正则表达式时遇到问题。事实上,该函数的工作原理类似于中间件,用于验证用户输入的数据,用户输入的数据最多可接受逗号后的2位小数

我需要考虑以下示例:

通过:

  • 1.12

  • 10.15

  • 二十

  • 14.1

失败:

  • 10.100

  • 15,10

  • 12e9

  • 任何上面有字母的东西

我的尝试:

const validation = (values) => {
  let errors = {};
  let commaValidation = new RegExp("^(\d{1,2}(?:\.\d{1,2}))");
  for (var prop in values) {
    if (commaValidation.test(commaValidation.test(parseFloat(values[prop] && parseFloat(values[prop]) >= 0 && parseFloat(values[prop] <= 20))) ) {
      if (Object.prototype.hasOwnProperty.call(values, prop)) {
        errors[prop] = "Entrez un nombre entre 0,00 et 20,00";
      }
    }
  }
  return errors;
};

export default validation;

const验证=(值)=>{
让错误={};
让commaValidation=newregexp(“^(\d{1,2}(?:\。\d{1,2}))”;
用于(值中的var prop){

如果(commaValidation.test)(commaValidation.test)(parseFloat(values[prop]&&parseFloat(values[prop])>=0&&parseFloat(values[prop]),您必须添加一个锚点
$
,并使小数部分可选
^\d{1,2}(?:\.\d{1,2})?$
您还需要对RegExp构造函数中的反斜杠进行双重转义,对于匹配项,您只能忽略外部捕获组。@Thefourthbird我如何添加它?因为我对regex是新手?使用
让commaValidation=newregexp(^\\d{1,2}(?\.\\d{1,2})$);
让commaValidation=/^\d{1,2}(?\.\d{1,2})$/
这个正则表达式应该完成工作
^\d{1,2}(\.\d{1,2})$