首页 > 解决方案 > 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>

标签: javascriptjquerynode.jsexpresshandlebars.js

解决方案


RegExp.prototype.test()是您正在寻找的。在您的用例中:

/:/.test(<user input>)

推荐阅读