javascript - Node.js Express 输入验证“:”之间的两个字符串被接受
问题描述
我已经实现了一个页面,学生可以在其中输入具有预期里程碑的课程名称。但是,我想添加仅允许用户使用以下方法输入的验证,两个字符串之间带有“:”。例如 - “课程:里程碑”。接受任何长度的字符串,只要它确保有两个字符串用 ':' 将它们分隔在中间,如示例中所示。我对 Node.js、Express、jQuery 和 Handlebars 非常陌生,并且我已经寻找了执行此操作的方法,但似乎没有一个有用。下面是唯一需要的代码。
在控制器文件中,用于创建新输入数据的部分
const Task = require('../models/task');
create: function(req, res) {
Task
.create(req.body)
.then(result => {
// result.sort(sortTask)
res.json(result)
})
.catch(err => res.json(err));
}
模型文件 task.js 供参考
//dependency
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
//data inputted into the database, coursework/milestones section, validation included
const taskSchema = new Schema({
task: {
type: String,
},
completed: {
type: Boolean,
default: false
},
addedAt: {
type: Date,
default: Date.now()
},
});
const Task = module.exports = mongoose.model('Task', taskSchema);
允许这些操作工作的 jQuery 代码,在 public 文件夹,eventListeners.js 文件中
$(document).ready(function() {
//index page events
//click even for creating a milestone/coursework
$('#create').on('click', function(e) {
createTask(e);
});
//keypress event that allows milestone?coursework to be created on 'Enter'
$('#task').keypress(function(e) {
if (e.key === 'Enter') {
createTask(e);
}
});
index.hbs 文件输入部分
<input type="text" class="form-control" placeholder="Coursework : Milestone" id="task" autofocus>
解决方案
RegExp.prototype.test()是您正在寻找的。在您的用例中:
/:/.test(<user input>)
推荐阅读
- vagrantfile - 如何覆盖每个提供商的 Vagrantfile 的 synced_folder 类型?
- python - 调试时在 pool.close() 上抛出异常,但在运行时没有
- android - 发布到 API 或向我的应用程序添加付款的意图是什么?(喜欢记笔记)
- sql-server - kafka 连接接收器的唤醒异常
- javascript - 基于 JavaScript 中的部分字符串匹配过滤对象
- c# - 在 Asp .Net 中使用 SignalR 创建实时数据库
- python - 如何使用 sourcelair 运行 python 程序?
- python - python使用pyshark解析.pcap文件
- python - 有没有更有效的方法从另一个具有复杂规则的数组生成数组?
- kubernetes - 在 minikube 中以详细模式运行 Kubernetes api 服务器