我正在使用 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."})
满足第一个和第二个条件。我正在为“没有空格”和“只有字母数字字符、破折号和下划线”的第三个和第四个条件而苦苦挣扎。
我尝试通过正则表达式来处理空格和第四个条件,但它不起作用,所以我现在只是将空格分隔到排除项中。 如果您刚刚键入的字符不是正则表达式模式中的字符,则第四个条件的模式有效。但是,如果您继续输入“有效”字符并且之前有一个“无效”字符,错误就会消失并变为有效。
如果输入框中有任何“无效”字符,有人知道如何正确地执行该模式以捕获它吗?如果可能的话,如果我可以将无空格条件与模式合并,那就太好了。
最佳答案
/^[a-zA-Z][a-zA-Z0-9_\-]*$/
。
[a-zA-Z]
表示字母。[a-zA-Z0-9_\-]
表示字母、数字、破折号或下划线。*
表示重复0次或多次^
是字符串的开始$
是字符串的结尾
读出为:在字符串的开头,匹配一个后者,然后匹配零个或多个字母、数字或下划线字符,然后匹配字符串的结尾。
关于javascript - Livevalidation - 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225292/