2012-05-29 550 views
2

我有在Java中的正則表達式轉換爪哇正則表達式爲Javascript正則表達式

^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!()*,/:;<>?\\\]\[\-_`{}[email protected]#$%^&+=]).*$ 

它匹配它具有這些條件的字符串:

  • 至少8個字符
  • 至少一個數位
  • 至少有一個小寫字母
  • 至少有一個大寫字母
  • 至少一個特殊字符

    [!()*,/:;<>?\\\]\[\-_`{}[email protected]#$%^&+=] 
    

我怎樣才能把它轉換成一個JavaScript正則表達式?

回答

3

用簡單的regex簡單的解決方案。

var re = /^(.{0,7}|\D+|[^a-z]+|[^A-Z]+|[^\^[email protected]#$%&\*])$/; 
if (!re.test(str)) { 
    alert('Matched'); 
} 

請注意,我的正則表達式中缺少一些特殊字符。

+0

以消極的方式看待事情是一個非常好的主意。但它沒有給出確切的結果。請參閱[this jsfiddle](http://jsfiddle.net/mabilalmirza/8QWAr/10/)。 –

+0

簡單的解決方案與簡單的正則表達式不起作用。 'aaaaaaa' – Ryan

+1

@BilalMirza你應該逃脫 - 簽署。 [更新jsfiddle](http://jsfiddle.net/taggon/8QWAr/11/) – taggon

2

它已經工作在JavaScript的:

var re = /^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!()*,/:;<>?\\\]\[\-_`{}[email protected]#$%^&+=]).*$/; 
re.test('abcdefgh0A$') // true 
+0

我希望創建一個[jsfiddle](http://jsfiddle.net/mabilalmirza/8QWAr/)。所有給定的字符串都是有效的,但它與某些字符串不匹配。我在那裏錯過了什麼? –

+0

@BilalMirza:首先,提示:使用正則表達式文字,就像我在斜線示例中所做的那樣 - 從來沒有「新的RegExp」,這幾乎總是一個壞主意。接下來,不,它們並非全部有效......例如,'ptiLad4emp9'不包含符號。 – Ryan

+0

你說得對。所有字符串都無效。我想知道爲什麼我注意到了這一點。但爲什麼**新的RegExp()**是一個壞主意? –

3

放兩個斜線周圍:

var re = /<your_regex_here>/; 
相關問題