活体验证-正则表达式问题

Livevalidation - Regex issue

本文关键字:正则表达式 问题 验证 体验      更新时间:2023-09-26

我使用livevalvalidation (http://livevalidation.com/)来验证我网站上的页面url表单。我的条件是:

  • 不能为空
  • 必须以字母
  • 开头
  • 不允许空格
  • 仅包含字母数字字符、破折号和下划线

到目前为止,我有这个:

    var formName = new LiveValidation("sitePages-name");
    formName.add(Validate.Presence);
    formName.add(Validate.Format,{ pattern: /^[a-zA-Z]/, failureMessage: "Must start with a letter." } );
    formName.add(Validate.Exclusion, {within: [' '], partialMatch: true, failureMessage: "Spaces are not allowed."});
    formName.add(Validate.Format,{ pattern:/[a-zA-Z0-9-_]+$/, failureMessage: "Only alpha-numeric characters, dashes and underscores."})

满足第一个和第二个条件。我正在纠结第三和第四个条件:"没有空格"answers"只有字母数字字符、破折号和下划线"。

我试着用正则表达式做空间和第四个条件,但它不起作用,所以我现在只是把空间分隔成排除。如果您刚刚键入的字符不在正则表达式模式中,则第四个条件的模式有效。但是,如果您一直输入"有效"字符,并且之前有一个"无效"字符,则错误将消失,并且它将变为有效。

有没有人知道如何正确地做模式来捕获它,如果在输入框中有任何"无效"字符?如果可以的话,我可以将无空格条件与模式合并,那就太好了。

/^[a-zA-Z][a-zA-Z0-9_'-]*$/ .

  • [a-zA-Z]为字母。
  • [a-zA-Z0-9_'-]表示字母、数字、破折号或下划线。
  • *表示重复0次或以上
  • ^是字符串
  • 的开始。
  • $是字符串
  • 的结尾

它读出为:在字符串的开头,匹配一个后,然后匹配零个或多个字母、数字或下划线字符,然后匹配字符串的结尾。

没有使用该插件,我认为通过add添加的后续验证是按顺序处理的。

在这种情况下:

var formName = new LiveValidation("sitePages-name");
// Must be present
formName.add(Validate.Presence);
// Must start with A-Z or a-z
formName.add(Validate.Format,{ pattern: /^[a-zA-Z]/, failureMessage: "Must start with a letter." } );
// Must only have A-Z, a-z, 0-9, _, or -
formName.add(Validate.Format,{ pattern:/.[a-zA-Z0-9_'-]+$/, failureMessage: "Only alpha-numeric characters, dashes and underscores."})

我没有为空格设置规则,因为它被第三条规则所覆盖,需要A-Z, a-z, 0-9, _-

上面我假设您想在错误消息中尽可能具体。因为可以在一个步骤中完成:

formName.add(Validate.Format,{ pattern: /^[a-zA-Z][a-zA-Z0-9_'-]*$/, failureMessage: "Must start with a letter and consist only of alphanumerics, underscores, or dash characters" } );

(假设允许单字符条目。如果至少需要两个字符,请将*更改为+

你可以这样做:

/^[a-zA-Z]['w-]*$/