var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$")
checkForHexRegExp.test("i am a bad boy")
// false
checkForHexRegExp.test("5e63c3a5e4232e4cd0274ac2")
// true
function isValidObjectID(str) {
// coerce to string so the function can be generically used to test both strings and native objectIds created by the driver
str = str + '';
var len = str.length, valid = false;
if (len == 12 || len == 24) {
valid = /^[0-9a-fA-F]+$/.test(str);
}
return valid;
}
from cerberus import Validator
import re
class CustomValidator(Validator):
def _validate_type_objectid(self, field, value):
"""
Validation for `objectid` schema attribute.
:param field: field name.
:param value: field value.
"""
if not re.match('[a-f0-9]{24}', str(value)):
self._error(field, ERROR_BAD_TYPE % 'ObjectId')
## Initiate the class and validate the information
v = CustomValidator()
schema = {
'value': {'type': 'objectid'}
}
document = {
'value': ObjectId('5565d8adba02d54a4a78be95')
}
if not v(document, schema):
print 'Error'
9条答案
按热度按时间9ceoxa921#
这是一项简单的检查-并非100%万无一失
如果要检查包含24个十六进制字符的字符串,可以使用此正则表达式。
正则表达式取自github.com/mongodb/js-bson/.../objectid.ts
为了更好地检查,请用途:
isValid
代码github.com/mongodb/js-bson/.../objectid.ts8fq7wneg2#
isValid()
位于js-bson(objectid.ts
)库中,该库是node-mongodb-native的依赖项。不管是谁发现了这个问题,我不建议像其他答案中推荐的那样重新创建这个方法,而是继续使用
node-mongodb-native
,就像最初的发帖者使用的那样,下面的例子将访问js-bson
中的isValid()
方法。**2018年7月更新:**当前的方法是:
h6my8fg23#
作为Eat at乔斯答案的扩展...这在node-mongodb-native 2.0中有效
xtfmy6hx4#
如果您使用的是
mongoose
,那么您可以使用mongoose进行验证,而不依赖于任何其他库。fnvucqvd5#
@GianPaJ的代码片段很棒,但是需要稍微扩展一下以覆盖非十六进制的objectID。同一文件的第32行指出objectID的尺子也可以是12个字符。这些键被mongodb驱动程序转换为24个字符的十六进制ObjectID。
9q78igpj6#
下面是我的模型,我尝试使用JOI
(Joi.objectId().required())
验证objectId数据类型的主题id:joi-objectid
验证该值是否为长度为24个字符的字母数字字符串。MongoDB ObjectId validator for Joi.
dgsult0t7#
遵循以下正则表达式:
在js中
新的正则表达式("^[0 - 9a-fA-F] {23} $").测试(" 5e79d319ab5bfb2a9ea4239 ")
在Java中
模式. compile("^[0 - 9a-fA-F] {23} $"). matcher(清理文本(值)). matches()
aydmsdu98#
前面的答案将工作,但我发现,我们可能需要另一个额外的检查,以满足一些边缘情况,exp:任意12个随机字符串。
wtlkbnrh9#
您可以使用Cerberus并创建自定义函数来验证和ObjectId