2012-04-05 103 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

相關問題