Javascript 我如何检查它是否';是一个12字节的字符串对象,mongodb中的ObjectID?

Javascript 我如何检查它是否';是一个12字节的字符串对象,mongodb中的ObjectID?,javascript,node.js,regex,string,mongodb,Javascript,Node.js,Regex,String,Mongodb,我想检查ObjectID是否正确以继续我的代码。我在NodeJS上,我不想得到错误: 错误:传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串 事实上,我做了这些测试: if (!user.id || !user.id.match("/^[0-9a-fA-f]{24}$") || !typeof(user.id) === 'string') { console.log("user id is required !") return callback(

我想检查ObjectID是否正确以继续我的代码。我在NodeJS上,我不想得到错误:

错误:传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串

事实上,我做了这些测试:

if (!user.id || !user.id.match("/^[0-9a-fA-f]{24}$") || !typeof(user.id) === 'string') {
        console.log("user id is required !")
        return callback("user id is required !")
    }
对于24个十六进制字符的字符串,我得到了以下正则表达式:

!user.id.match("/^[0-9a-fA-f]{24}$")
我正在搜索检查它是否是一个12字节的字符串:

!typeof(user.id) === 'string'
我应该如何为12个字节添加验证


有什么想法吗?

据我所知,您可以将任何字符串作为Id传递。你应该 可能先将其转换为十六进制字符串()


使用NodeJS时,如果您正在使用:

const objectID = require('mongodb').objectID
您可以这样简单地测试您的ObjectID:

ObjectID.isValid(yourobjectid)

如果有效,它将返回true;如果无效,它将返回false。

检查您是否真的在问我们“如何检查字符串的长度是否为12个字符”?我在同一个测试中要求这两个选项@TomLord@Cupkek05
^(.{12}|[0-9a-fA-f]{24})$
??…@TomLord,谢谢,它能用,对不起,我是regex新手。。。理解起来并不是那么简单:/ObjectID是在我创建用户时自己创建的。实际上,我在插入对象之前检查用户是否已注册。我的URL需要用户的ObjectID来插入对象。我想检查URL中传递的ObjectID是否是正确的ObjectID。我不想用你的十六进制方法自己创建ObjectID:)也许这篇文章就是你需要的?是的,也许吧,但是有可能用正则表达式检查一下吗?如果它是一个由24个十六进制字符组成的字符串,或者是一个由12个字节组成的字符串,那么它必须匹配。我想这些验证必须可以通过正则表达式进行。。。
const objectID = require('mongodb').objectID
ObjectID.isValid(yourobjectid)