1

我正在使用 LiveValidation ( 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."})

满足第一个和第二个条件。我正在为“无空格”和“只有字母数字字符、破折号和下划线”的第三个和第四个条件而苦苦挣扎。

我尝试通过正则表达式来处理空格和第四个条件,但它不起作用,所以我现在只是将空格分隔到排除项中。如果您刚刚键入的字符不是正则表达式模式中的一个,则第四个条件的模式有效。但是,如果您继续输入“有效”字符并且之前输入了“无效”字符,错误就会消失并变为有效。

如果输入框中有任何“无效”字符,有谁知道如何正确地捕捉它?如果可能的话,如果我可以将无空间条件与模式合并,那就太好了。

4

3 回答 3

2

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

  • [a-zA-Z]是字母的意思。
  • [a-zA-Z0-9_\-]表示字母、数字、破折号或下划线。
  • *表示重复0次或多次
  • ^是字符串的开头
  • $是字符串的结尾

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

于 2013-06-20T23:10:09.790 回答
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" } );

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

于 2013-06-20T23:10:19.330 回答
0

你可以使用这个:

/^[a-zA-Z][\w-]*$/
于 2013-06-20T23:13:48.453 回答