/^(?=.*[a-z])[a-z0-9]{3,16}$/
我想在ng-pattern中使用这个regex来检查来自用户的文本输入。
我想你说错了你的问题,但事实并非如此
具有第一个字母和最多一个字母和一个数字的alphnumeric的正则表达式
但实际上
function pass(str) {
return alphanumeric(str) &&
one_alphabet(str) &&
one_number (str) &&
right_length(str) &&
first_alpha (str);
}
人们一眼就能看出这是干什么的,而且是正确的。你的老板甚至可能会想出来。像这样命名个别条件也为我们自己和后来的人构成了一种文档。
现在只需编写每个小函数,即使是那些具有基本regexp技能的人也可以完成:
function alphanumeric(str) { return !/[^a-z0-9]/.test(str); }
function one_alphabet(str) { return /a-z/ .test(str); }
function one_number (str) { return /\d/ .test(str); }
function first_alpha (str) { return /^[a-z]/ .test(str); }
function right_length(str) { var l = str.length; return l >=3 && l <= 16; }
实际上,如果first_alpha
通过,那么one_alphabet
也会通过,所以我们可以省略这个测试。
var rules = [ alphanumeric, one_number, right_length, first_alpha];
function pass(str) {
return rules.all(function(rule) { return rule(str); });
}
以这种方式编写东西的许多优点之一是它可以轻松地处理异步检查--假设您想检查密码以前是否使用过,这需要往返服务器。所以我们写
var rules = [ alphanumeric, one_number, right_length, first_alpha, not_used];
function not_used(str) { return ajax(...); }
然后我们可以将pass写为
function pass(str) {
return Promise.all(rules.map(function(rule) { return rule(str); }) .
then (function(results) { console.log("Valid: ", results.all(Boolean)); }) .
catch(function() { console.log("Execution of rule failed"); });
}
上次检查时,Regexp无法处理异步检查。
我的输入字段的密码验证要求如下:“密码应至少包含一个大写字母、一个小写字母、一个数字或特殊字符”。 这是1个大写、1个小写、1个数字和一个特殊字符的正则表达式
要匹配至少包含一个字母或数字的字符串,JavaScript正则表达式是什么?这至少需要一个字母数字字符(至少一个字母或至少一个数字)。
我在Groovy中使用正则表达式。 我试图用以下规则来公式化正则表达式。 必须正好是17个字符 必须只包含字母和数字 必须包含至少1个alpha和1个数字字符 不能包含字母'I'、'O'或'Q'(大写或小写) 用下面的表达,我想我就快到了。下面的正则表达式似乎满足了要求1、2和3。 我曾尝试添加要求4,但没有成功。谁能帮我一下吗? 谢谢
谁能帮我用一个正则表达式来允许至少一个特殊字符,一个大写字母,一个小写字母。 这是我到目前为止所拥有的: 但它似乎只按“特殊字符”、“大写”、“小写”的顺序匹配字符。 非常感谢您的帮助
我需要一个正则表达式,它需要满足以下要求:- null 例如有效数据 W1A 1HQ 1234-456 IT-12345 12345 到目前为止,我已经尝试了下面的表达式,但它不能正常工作 编辑 此处发布的解决方案不接受字符串中的一个空格和一个hypen的组合。请提供一个表达式,将支持所有的要求在一起的组合。