2012-04-05 340 views
4

SO好友,问候。我有一些我需要实现的密码要求,其中一个要求是字符串不能以特殊字符开头或结尾。我确实花了一些时间搜索,但我的RegEx功夫是kimosabe水平。正则表达式字符串不会以特殊字符开始或结束

万一你感兴趣的一些代码,这里的的JavaScript
注:是的,密码也验证了服务器以及上:)下面的代码片段运行正则表达式测试和简单地检查或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); 

    } 
+0

我不知道这是否是错误,但我看到,正则表达式正则表达式(“12345678”)没有任何分隔符,会是它? – rednaw 2012-04-05 15:10:15

+0

'/^[\ d \ w] + $/i'有什么问题? – Alexander 2012-04-05 15:11:41

+0

@rednaw现在的代码没有任何错误,需要实施一个新的要求。基于下面的答案,它看起来像我需要'/^[^ a-z]。* /'的东西,但我还需要包含数字。换句话说,我确保密码都以字母或数字开头和结尾。 – pixelbobby 2012-04-05 15:19:57

回答

12

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

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

信息

在正则表达式^手段 '开头的字符串' 和$手段“端字符串',例如: -

/^something$/ 

匹配

'something' 

但不是

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

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

/^[^#&].*/ 

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

+0

这个答案仍然非常有帮助。 – pixelbobby 2012-04-05 15:37:25

+0

我会给@rgvcorley的答案,因为他提供了最大的努力并且是第一个答案,尽管rednaw得到了答案(关闭)并且很快。 – pixelbobby 2012-04-05 15:38:56

1

此正则表达式应该是你想要什么:

/^[0-9a-z].*[0-9a-z]$/ 
+0

是的! '^ [0-9a-zA-Z]。* [0-9a-zA-Z] $' – pixelbobby 2012-04-05 15:29:51

+1

这不会匹配'p'或'1'这样的字符串,它们都以字符或数字开头和结尾 – rgvcorley 2012-04-05 15:31:00

+0

你确定吗?我在RegExr上面的注释中测试了表达式,它与以下内容匹配:password1,password,1password ... – pixelbobby 2012-04-05 15:36:39

相关问题