javascript - 使用正则表达式进行表单验证

标签 javascript php regex

我编写了一个函数来验证密码是否有效。我遇到的唯一问题是弄清楚为什么我用 JavaScript 编写的这种模式在使用诸如“SteveRogers#256”的密码进行测试时未评估为真。这是我声明正则表达式模式的方式的问题吗?

PHP

function check_password($pass_word)
{
    $pattern = "#.*^(?=.{8,15})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#";

    return (preg_match($pattern, $pass_word));
}

JavaScript

function check_password(pass_word) {
    var pattern = new RegExp("#.*^(?=.{8,15})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#");

    return pattern.test(pass_word);
}

最佳答案

删除 Javascript 中的正则表达式定界符,因为 new RegExp 在构造函数中采用字符串。正确的 Javascript 代码应该是:

var pattern = new RegExp("^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\\W).{8,15}$");

关于javascript - 使用正则表达式进行表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184252/

相关文章:

javascript - 类型错误 : 'getUserMedia' webrtc adapter. debug.js

javascript - jQuery 错误 "cannot read property ' 未定义的调用'

javascript - 开 Jest 意外的 token (15 :29) on "<"

javascript - D3js 外部限制

Phpunit 找不到抽象类

PHP/SQL 列表顺序不显示

regex - 使用 sed/regex 在同一行中提取多个匹配项

php - Cakephp 查询缓存

c# - 如何评估正则表达式 OR 运算符

java - 正则表达式:用括号分割忽略嵌套括号