我想用以下验证我的文本字段:
1. 字母数字
2. 所有我不擅长正则表达式的特殊字符
,谁能帮我为上述内容创建一个正则表达式。
5 回答
字母数字字符串匹配如下:
^[a-zA-Z0-9]+$
它匹配任何仅包含列出的字符且长度至少为一个字符的字符串。
使用特殊字符,它的工作方式相同。
但是你认为什么是特殊的字符?
对于 !@#$%^&*()+=-[]\';,./{}|":<>? – 作为特殊字符集,正则表达式如下所示:
^[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+$
同样,列出了所有允许的字符。在正则表达式中用作命令或量词的那些必须用\
.
这将做你想要的。
function validate()
{
var val = <my string>;
if (val == '')
alert('String is empty!');
else if (!val.match(/[_\W]/))
alert('String contains only A-Z a-z 0-9 characters!');
else if (!val.match(/^\w[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]/))
alert('String contains your predefined characters only!');
}
请注意,两个正则表达式都适用于双重否定,在非法字符的第一个匹配中返回 false 以获得最佳性能。首先是\W
字符集的否定,它是\w
. 其次是对预定义字符(+预定义字符)!
的否定。如果您需要任何解释或修改,请回复。^
\w
编辑 如果字符串至少有一个特殊字符和字母数字字符,这是一个匹配的正则表达式。
if (val.match(/[^_\W]/) && val.match(/[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]/))
alert('String contains both alpha-numeric and your pre-defined special characters!');
可以吗,还是您需要在单个正则表达式模式中使用它?
编辑 这将在一个正则表达式中完成:
if (val.match(/(?=.*[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+?).*[^_\W]+?.*/)
alert('String contains both alpha-numeric and your pre-defined special characters!');
您可以对所有特殊字符尝试此操作
/^[0-9a-zA-Z\s\r\n@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]+$/;
对于字母数字和所有特殊字符验证
您可以在一个正则表达式中使用
如果您至少有 8 个字符,至少 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符,这将返回 true
NSString *alphaNumberandSpecialRegex =@"^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$";
NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex];
return [alphaNumberTest evaluateWithObject:@"yourString"];
最少 8 个字符,至少 1 个字母和 1 个数字:
NSString *alphaNumberandSpecialRegex =@""^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"";
NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex];
return [alphaNumberTest evaluateWithObject:@"yourString"];
最少 8 个字符,至少 1 个字母、1 个数字和 1 个特殊字符:
NSString *alphaNumberandSpecialRegex =@"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$";
NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex];
return [alphaNumberTest evaluateWithObject:@"yourString"];
最少 8 个字符,至少 1 个大写字母、1 个小写字母和 1 个数字:
NSString *alphaNumberandSpecialRegex =@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$";
NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex];
return [alphaNumberTest evaluateWithObject:@"yourString"];
最少 8 个和最多 10 个字符,至少 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符:
NSString *alphaNumberandSpecialRegex =@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}";
NSPredicate *alphaNumberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNumberandSpecialRegex];
return [alphaNumberTest evaluateWithObject:@"yourString"];
如果要允许带有字母数字的特定特殊字符,则以下正则表达式将起作用。您可以根据您的要求自定义允许的特殊字符范围。如果是转义字符,您需要放在 \ 之间。在下面的示例中 \-\ 允许使用“-”。
/^[a-zA-Z0-9?=.*!@#$%^&*_\-\s]+$/
希望对你有帮助 :)。