5

我想用以下验证我的文本字段:
1. 字母数字
2. 所有我不擅长正则表达式的特殊字符
,谁能帮我为上述内容创建一个正则表达式。

4

5 回答 5

6

字母数字字符串匹配如下:

^[a-zA-Z0-9]+$

它匹配任何仅包含列出的字符且长度至少为一个字符的字符串。

使用特殊字符,它的工作方式相同。

但是你认为什么是特殊的字符?

对于 !@#$%^&*()+=-[]\';,./{}|":<>? – 作为特殊字符集,正则表达式如下所示:

^[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+$

同样,列出了所有允许的字符。在正则表达式中用作命令或量词的那些必须用\.

于 2012-05-04T21:29:45.943 回答
3

这将做你想要的。

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!');
于 2012-05-04T21:46:10.753 回答
2

您可以对所有特殊字符尝试此操作

 /^[0-9a-zA-Z\s\r\n@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]+$/;
于 2013-07-18T11:21:29.890 回答
1

对于字母数字和所有特殊字符验证

您可以在一个正则表达式中使用

如果您至少有 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"];
于 2017-04-27T11:11:51.020 回答
0

如果要允许带有字母数字的特定特殊字符,则以下正则表达式将起作用。您可以根据您的要求自定义允许的特殊字符范围。如果是转义字符,您需要放在 \ 之间。在下面的示例中 \-\ 允许使用“-”。

/^[a-zA-Z0-9?=.*!@#$%^&*_\-\s]+$/

希望对你有帮助 :)。

于 2014-08-27T07:17:45.077 回答