📜  没有中间件的节点 js 验证正文 - Javascript (1)

📅  最后修改于: 2023-12-03 15:40:42.681000             🧑  作者: Mango

没有中间件的节点 JS 验证正文 - Javascript

在使用 Node.js 编写应用程序时,常常需要对用户输入的数据进行验证。中间件库如 express-validator 可以帮助我们完成这个任务。但是,在某些情况下,我们可能更喜欢没有中间件的纯 Node.js 操作。

在本文中,我们将介绍如何使用 Node.js 编写不需要中间件的验证代码。

准备工作

首先,我们需要设置一个 Node.js 项目。打开命令行,并执行以下命令:

mkdir node-validation
cd node-validation
npm init -y

这将为我们创建一个名为 node-validation 的文件夹,并在其中创建一个 package.json 文件。

接下来,我们需要安装一些必要的依赖项:

npm install --save chalk

我们选用了 chalk 作为我们的命令行样式库。

验证手机号码

第一个例子将是验证中国大陆手机号码。我们将定义一个函数,该函数接收一个字符串参数并返回一个布尔值。在这个例子中,我们将使用正则表达式来验证号码。以下是代码:

const chalk = require('chalk');

// 手机号码验证函数
function validatePhone(phone) {
  const reg = /^((\+86)|(86))?1(3|4|5|6|7|8|9)\d{9}$/;
  return reg.test(phone);
}

// 测试
const testPhone1 = '+8613512345678';
const testPhone2 = '13512345678';

console.log(chalk.cyan(`验证 ${testPhone1} 结果:${validatePhone(testPhone1)}`));
console.log(chalk.cyan(`验证 ${testPhone2} 结果:${validatePhone(testPhone2)}`));

输出:

验证 +8613512345678 结果:true
验证 13512345678 结果:true

我们使用一个正则表达式来匹配手机号码。这个正则表达式使用 ^$,让它只在整个字符串中匹配。它还使用 |,这意味着我们可以接受 +86 和 86 作为前缀。最后,它使用 \d,这是一个表示数字的元字符。

验证密码

接下来是验证密码。在这个例子中,我们将确保密码至少有 8 个字符,并且包含字母和数字。以下是代码:

// 密码验证函数
function validatePassword(password) {
  const reg = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
  return reg.test(password);
}

// 测试
const testPwd1 = 'password123';
const testPwd2 = 'pass';

console.log(chalk.cyan(`验证 ${testPwd1} 结果:${validatePassword(testPwd1)}`));
console.log(chalk.cyan(`验证 ${testPwd2} 结果:${validatePassword(testPwd2)}`));

输出:

验证 password123 结果:true
验证 pass 结果:false

使用正则表达式,我们将匹配至少包含一个字母和一个数字的 8 个或更多字符的字符串。

验证电子邮件地址

最后一个例子将是验证电子邮件地址。以下是代码:

// 电子邮件地址验证函数
function validateEmail(email) {
  const reg = /^([a-zA-Z0-9._+-])+@([a-zA-Z0-9-])+\.([a-zA-Z0-9]{2,4})(\.[a-zA-Z0-9]{2,4})?$/;
  return reg.test(email);
}

// 测试
const testEmail1 = 'example@example.com';
const testEmail2 = 'example@com';

console.log(chalk.cyan(`验证 ${testEmail1} 结果:${validateEmail(testEmail1)}`));
console.log(chalk.cyan(`验证 ${testEmail2} 结果:${validateEmail(testEmail2)}`));

输出:

验证 example@example.com 结果:true
验证 example@com 结果:false

那么我们的正则表达式是如何工作的呢?它使用 ^$ 元字符在字符串的开头和结尾进行匹配。它还使用了一些限定符:+ 表示一个或多个字符,? 表示可选字符。最后,它使用了方括号以及 \.,这是一个转义句点。