正则expression式来匹配符号:!$%^&*()_ + |〜 – =`{} :“;'<>?,。/

我试图在JavaScript中创build一个正则expression式testing,将testing一个string包含任何这些字符:

!$%^&*()_+|~-=`{}[]:";'<>?,./ 

更多信息如果你有兴趣:)

这是一个非常酷的密码更改应用程序,我正在努力。 如果你有兴趣,这里是其余的代码。

我有一个列出密码要求的表,当最终用户键入新的密码时,它将testing一个正则expression式数组,并在相应的表格行中放置一个复选标记,如果它…检出:)我只需要添加这个代替validation数组中的validation

 var validate = function(password){ valid = true; var validation = [ RegExp(/[az]/).test(password), RegExp(/[AZ]/).test(password), RegExp(/\d/).test(password), RegExp(/\W|_/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password), !RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password), !RegExp(/([az]|[0-9])\1\1\1/).test(password), (password.length > 7) ] $.each(validation, function(i){ if(this) $('.form table tr').eq(i+1).attr('class', 'check'); else{ $('.form table tr').eq(i+1).attr('class', ''); valid = false } }); return(valid); } 

是的,还有相应的服务器端validation!

这个正则expression式非常简单。 只要使用一个字符类。 连字符是字符类中的一个特殊字符,所以它必须是第一个:

 /[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/ 

您还需要转义其他正则expression式元字符。

编辑:连字符是特殊的,因为它可以用来表示一个字符的范围。 这个相同的人物类可以用这个范围来简化:

 /[$-/:-?{-~!"^_`\[\]]/ 

有三个范围。 '$'到'/',':'到'?','{'到'〜'。 最后一个string不能简单地用范围表示:!“^ _`[]”。

使用ACSII表来查找字符类的范围。

用'A'中的任何一种语言replace所有后者,并且如果你希望所有数字都为0:

 return str.replace(/[^\s!-@[-`{-~]/g, "A").replace(/\d/g, "0");