正则表达式字符串不以特殊字符开头或结尾

pix*_*bby 4 javascript regex jquery

所以伙计们,问候.我有一些我需要实现的密码要求,其中一个要求是字符串无法以特殊字符开头或结尾.我确实花了一些时间谷歌搜索,但我的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);

    }
Run Code Online (Sandbox Code Playgroud)

rgv*_*ley 14

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

/^[a-zA-Z0-9](.*[a-zA-Z0-9])?$/
Run Code Online (Sandbox Code Playgroud)

附加信息

在正则表达式中^意味着'字符串的开头'并且$意味着'字符串的结尾',例如: -

/^something$/
Run Code Online (Sandbox Code Playgroud)

火柴

'something'
Run Code Online (Sandbox Code Playgroud)

但不是

'This is a string containing something and some other stuff'
Run Code Online (Sandbox Code Playgroud)

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

/^[^#&].*/
Run Code Online (Sandbox Code Playgroud)

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