我有以下要求:
Windows计算机名称长度不能超过15个字符 完全数字,或包含以下字符:`〜! @#$%^ &安培; *()= + _ [] {} \ | ; :。 '“,<> /?。
我想创建一个RegEx来验证给定的计算机名称。
我可以看到唯一允许的字符是-
,到目前为止,我有这个:
/^[a-zA-Z0-9-]{1,15}$/
除了“不完全数字”部分之外几乎匹配所有约束。
如何将最后一个约束添加到我的RegEx?
答案 0 :(得分:5)
您可以使用否定前瞻:
^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$
或者只是使用两个正则表达式:
^[a-zA-Z0-9-]{1,15}$
AND NOT
^[0-9]{1,15}$;
以下是一个实例:
var regex1 = /^(?![0-9]{1,15}$)[a-zA-Z0-9-]{1,15}$/;
var regex2 = /^[a-zA-Z0-9-]{1,15}$/;
var regex3 = /^[0-9]{1,15}$/;
var text1 = "lklndlsdsvlk323";
var text2 = "4214124";
console.log(text1 + ":", !!text1.match(regex1));
console.log(text1 + ":", text1.match(regex2) && !text1.match(regex3));
console.log(text2 + ":", !!text2.match(regex1));
console.log(text2 + ":", text2.match(regex2) && !text2.match(regex3));