5

所以哥们,你好。我有一些需要实现的密码要求,其中一个要求是字符串不能以特殊字符开头或结尾。我确实花了一些时间在谷歌上搜索,但我的 RegEx 功夫是 kimosabe 水平。

万一您对某些代码感兴趣,这里是JavaScript
注意:是的,密码也在服务器上验证:) 以下代码段运行 RegEx 测试并简单地检查或 x 与密码规则关联的行项.

var validate = function(password){
        valid = true;

        var validation = [
            RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password), 
            RegExp(/[-!#$%^&*()_+|~=`{}\[\]:";'<>?,./]/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password), 
            !RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password), 
            !RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7)
        ]

        $.each(validation, function(i){
            if(this == true)
                $('.form table tr').eq(i+1).attr('class', 'check');
            else{
                $('.form table tr').eq(i+1).attr('class', '');
                valid = false
            }
        });

        return(valid);

    }
4

3 回答 3

18

编辑:你想要的正则表达式是: -

/^[a-zA-Z0-9](.*[a-zA-Z0-9])?$/

附加信息

在正则表达式^中表示“字符串的开头”和$“字符串的结尾”,例如:-

/^something$/

火柴

'something'

但不是

'This is a string containing something and some other stuff'

您可以使用 否定字符[^-char to negate-],所以

/^[^#&].*/

匹配任何不以 # 或 & 开头的字符串

于 2012-04-05T15:14:02.230 回答
2
/^[a-zA-Z0-9](.*[a-zA-Z0-9])?$/

此表达式检查以下验证:

  • 开头和结尾没有空格
  • 结尾和开头没有特殊字符
  • 之间允许的特殊字符
于 2018-04-12T07:36:08.927 回答
1

这个正则表达式应该是你想要的:

/^[0-9a-z].*[0-9a-z]$/
于 2012-04-05T15:23:36.687 回答