我试图为具有以下条件的字段创建正则表达式。
我已经创建了自己的正则表达式,但它在开头就接受了一个特殊字符
就像我在字段中输入 @或$ wer 一样,它会起作用并保存数据。
如果我在字段中输入 @@,%^ hihf或qwerty @ 333 ,则会显示错误。
找到下面的代码。
$.formUtils.addValidator({
name: "username",
validatorFunction: function(a) {
return !!a.match((/^[^\s][ A-Za-z0-9_./-]*$/))
},
errorMessage: "Please enter a valid Username (Special characters are not allowed apart from Underscore(_), Hyphen(-) and Period(.)) ",
errorMessageKey: "badname"
}),
答案 0 :(得分:2)
我认为在某些条件下你需要的不仅仅是正则表达式。尝试:
validatorFunction: function(a) {
var rgx = /^[A-Za-z0-9_./-]+$/;
var trimmed = a.trim();
return trimmed.length > 0 && rgx.test(trimmed);
}
这将解决空白,特殊字符和强制字母数字的问题......
答案 1 :(得分:1)
正则表达式开头的[^\s]
表示空格以外的任何字符都有效,因此“@”将匹配。
我认为你想使用这样的东西来允许前导和尾随空格并强制至少1个有效字符:
return !!a.match((/^\s*[A-Za-z0-9_\./\-]+\s*$/))