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

时间:2018-02-15 08:57:32

标签: 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.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 numberRegExp = /^\d{fieldElement.getAttribute('data-minlength')}$/;

当然不会起作用

编辑: 呸!有一个脑筋!

我可以检查值的长度

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;
}

3 个答案:

答案 0 :(得分:0)

而不是使用正则表达式来测试数字,只需使用!isNaN(fieldElement.value.trim())

答案 1 :(得分:0)

您需要使用RegExp构造函数:

const minlength = fieldElement.dataset.minlength;
const reg = new RegExp('^\d{'+minlength+'}$');

答案 2 :(得分:0)

尝试以下方法。 >>> from lxml import etree >>> tree = etree.parse('input.xml') >>> tree.docinfo <lxml.etree.DocInfo object at 0x7f8111f9ecc0> >>> tree.docinfo.xml_version '1.0' >>> tree.docinfo.encoding 'UTF-8'