JavaScript - 正则表达式 - 使用希伯来字符进行密码验证

3
我遇到了密码验证的问题。 这是我的代码:
function validatePassword(){

    var password = document.getElementById("password").value;
    var re = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/;


 if(!password.match(re)){

      producePromt("The password is invalid","commandPasswordPrompt","red");
            return false;

 }
    producePromt("Password is OK","commandPasswordPrompt","green");
            return true;
}

它说只是无效的,所以我认为这是由于正则表达式引起的。

我问你是否可以帮助处理这里的所有内容。

非常感谢您的帮助!


你能否告诉我哪个密码字符串是无效的? - anubhava
你尝试过使用类似 http://regexpal.com/ 这样的工具来测试一些示例数据吗? - Alex Podworny
1
http://regex101.com 还会为您提供解析正则表达式的文本说明。 - Eris
1
看起来你的正则表达式接受长度为6到16个字符的密码,而且必须包含数字、特殊字符,不一定需要字母……这符合你的要求吗? - David Zhou
1
上面的表达式表示,您的密码应该在六到十六个字符之间,并且至少应该有一个数字和一个特殊字符才能被视为有效。 - hex494D49
我希望密码包含数字和字母(英文和希伯来文)。密码长度应为8个字符到无限长。 - iYonatan
2个回答

4

试试这个

// At least eight numbers or/and letters of English or Hebrew language
^[a-zA-Z0-9\u0590-\u05FF]{8,}$

或者
// At least eight characters: one number, one uppercase, one lowercase English letter and one Hebrew letter
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\u0590-\u05FF]).{8,}$

或者

// At least eight characters: one number and one uppercase of lowercase English or Hebrew letter
^(?=.*[0-9])(?=.*[a-z|A-Z|\u0590-\u05FF]).{8,}$

使用方法:

var p = /^(?=.*[0-9])(?=.*[a-z|A-Z|\u0590-\u05FF]).{8,}$/g;
var s = "שלוםWorld2";
if(!p.test(s)){
  console.log("Invalid password!");
}

正则表达式演示 | jsBin演示


密码必须包含:英文或希伯来语(或两者同时)和数字。我不想要只有数字或只有字母。 - iYonatan
@iYonatan 你一定是在开玩笑吧 ;) 再检查一下答案,检查用法和两个演示。 - hex494D49
@iYonatan 将您的函数粘贴到您的问题中或将其粘贴到jsbin.com上,并在此处共享链接 - hex494D49
谢谢!但我要求密码验证:必须包含英文或希伯来文(或两者都有)和数字。我不想只有数字或只有字母。对于所有可能的选项: שלום12334 ddfdf123 שלוםhello123 שלוםHELLOworld123 - iYonatan
让我们在聊天中继续这个讨论 - iYonatan
显示剩余3条评论

0

或许你可以再检查一遍以使其更加简单易懂。 例如:

var password = document.getElementById("password").value;
var re1 = /^a-zA-Z0-9!@#$%^&*]{6,16}$/;
var re2 = /[0-9]/
var re3 = /[!@#$%^&*]/
if(password.match(re1) && password.search(re2) >=0 && password.search(re3) >=0){
      producePromt("The password is invalid","commandPasswordPrompt","red");
            return false;
} 
producePromt("Password is OK","commandPasswordPrompt","green");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接