尝试验证一串文字。规则是:
如果正则表达式匹配,则验证失败。
另外,这些工作,但我无法正确组合它们:
/^[^\x20-\x7F]+$/
- Regular expression to match all characters on a U.S. keyboard
/^(\w)\1{3,}$/
- Regex for detecting the same character more than five times?
无效示例:
用例不允许用户弄脏市场上的帖子(想想Craigslist)。
正则表达式引擎是AngularJS指令中的Javascript。
奖励:我还想让用户知道字符串中的失败。目前我正在为单个角色做这个,但不知道如何最好地输出失败的连续角色" !!无效":
当前工作代码段:
var alphaNumeric = /^[^0-9a-zA-Z\- ]+$/;
var charArray = new Array();
for (var i = 0; i < userstring.length; i++) {
if (alphaNumeric.test(userstring[i])) {
charArray.push(userstring[i]);
}
}
var errorMsg = charArray.join().toString() + " are invalid characters.";
答案 0 :(得分:1)
您正在寻找zero-width look-ahead assertions。
(?=^[\x20-\x7F]+$)(?!^.*?(\w)\1{2,}$).*
请注意我对您建议的表达式所做的细微更改,修复其中的错误。你的第三个要求是微不足道的,所以我把它作为练习留给你。
要了解原理如何运作,请仔细阅读我在此主题的答案:Regexp Java for password validation
P.S。:认真思考“美国键盘上的所有字符”是否应该引起注意,尤其是在网络应用程序环境中。
奖励:如果您想通知用户字符串中的失败,则不能再在单个表达式中执行此操作,您必须返回针对单个规则列表进行测试。