在javascript正则表达式中使用数据属性

在javascript正则表达式中使用数据属性,javascript,html,regex,custom-data-attribute,Javascript,Html,Regex,Custom Data Attribute,我使用这个脚本来验证数字输入字段 if (fieldElement.getAttribute('type') == 'number') { var numberRegExp = /^\d{4}$/; var numberValidated = numberRegExp.test(fieldElement.value.trim()); if (!numberValidated) { validated = false;

我使用这个脚本来验证数字输入字段

if (fieldElement.getAttribute('type') == 'number') {
        var numberRegExp = /^\d{4}$/;

        var numberValidated = numberRegExp.test(fieldElement.value.trim());

        if (!numberValidated) {
          validated = false;

          if (!fieldElement.hasClass('error')) {

            if (fieldElement.nextElementSibling != undefined) {
              fieldElement.nextElementSibling.removeClass('js-hide');
              fieldElement.addClass('error');
            } else {
              var fieldErrorMessage = fieldElement.getAttribute('data-msg');
              var errorMessage = document.createElement('span');

              fieldElement.addClass('error');

              setTimeout(function () {
                errorMessage.addClass('error');
                errorMessage.innerHTML = fieldErrorMessage;
              }, timeout);

              fieldElement.parentNode.appendChild(errorMessage);
            }
          }
        }
      }
但我找不到解决办法

var numberRegExp = /^\d{4}$/;
使用具有最小/最大值的数据属性

<input type="number" data-minlength="10" data-maxlength="10" />
这当然行不通

编辑: 呸!我放屁了

我可以检查值的长度

var minlength = fieldElement.getAttribute('data-rule-minlength');
var maxlength = fieldElement.getAttribute('data-rule-maxlength');

if(fieldElement.value.length < minlength || fieldElement.value.length > maxlength) {
   numberValidated = false;
}
var minlength=fieldElement.getAttribute('data-rule-minlength');
var maxlength=fieldElement.getAttribute('data-rule-maxlength');
if(fieldElement.value.lengthmaxlength){
numberValidated=false;
}

不用正则表达式测试数字,只需使用
!isNaN(fieldElement.value.trim())
您需要使用RegExp构造函数:

const minlength = fieldElement.dataset.minlength;
const reg = new RegExp('^\d{'+minlength+'}$');
尝试以下方法。

numberRegExp=newregexp('^[0-9]{'+fieldElement.getAttribute('data-minlength')+'}$');

您不能对
type=“number”
进行正则表达式验证。它应该是
type=“text”
。要动态创建一个正则表达式,您需要类似于
var numberRegExp=newregexp(“^\\d{+fieldElement.getAttribute('data-minlength')+“}$”;
可能您可以尝试这样的方法
var numberRegExp=newregexp('^\d{+fieldElement.getAttribute('data-minlength')+“}$)
。请注意,我没有测试这个,你可以试试。也许,一个副本。我测试的不仅仅是一个数字。它还必须是一个精确的长度。它是一个丹麦社会保险号码,是10位数字。那么就这样做吧
!isNaN(fieldElement.value.trim())和&fieldElement.value.trim().length===10
@downvoter您能告诉我这个答案的问题吗?我已经检查了这个代码。它正确地验证了数字和长度。所以请告诉我它是否适合您。
const minlength = fieldElement.dataset.minlength;
const reg = new RegExp('^\d{'+minlength+'}$');