用于计算机名称验证的RegEx(长度不能超过15个字符,完全是数字,或包含以下字符......)

时间:2017-02-13 13:22:09

标签: regex

我有以下要求:

  

Windows计算机名称长度不能超过15个字符   完全数字,或包含以下字符:`〜! @#$%^   &安培; *()= + _ [] {} \ | ; :。 '“,<> /?。

我想创建一个RegEx来验证给定的计算机名称。

我可以看到唯一允许的字符是-,到目前为止,我有这个:

/^[a-zA-Z0-9-]{1,15}$/

除了“不完全数字”部分之外几乎匹配所有约束。

如何将最后一个约束添加到我的RegEx?

1 个答案:

答案 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));