2012-05-29 49 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>/; 
相关问题