Parsley.js: как сделать собственный валидатор из существующего - PullRequest
0 голосов
/ 28 октября 2018

Я хотел бы проверить поле формы с помощью специального валидатора. Я хочу принять правило проверки:

Я думаю, что могу легко найти регулярное выражение для magnet и ed2k, но я бы хотел использовать валидацию URL в Parsley в моем пользовательском валидаторе. Как я могу его использовать (я имею в виду, не дублируя регулярное выражение из кода Петрушки)?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы можете вызвать встроенный валидатор следующим образом:

var urlInput = $('<input>').parsley({type: 'url'});

window.Parsley.addValidator('ownUrlValidator', {
  validateString: function (value, requirements) {
    return urlInput.isValid({value: value}) || // rest of your validator...
  },
})
0 голосов
/ 28 октября 2018

Добавьте свою собственную проверку регулярных выражений в функцию validateString Пользовательского валидатора Parsley.

window.Parsley.addValidator('ownUrlValidator', {
  validateString: function (value, requirements) {
    console.log("validating", value, requirements);

    //Validate your URL with the regex here
     var regExp = /^(https?|s?ftp|git):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;

    return '' !== value ? regExp.test( value ) : false;

  },
  messages: {
    en: 'Invalid URL'
  }
});
...