MongoDB 객체용 Regex아이디
이 SO 질문과 관련하여, 저는 a-f가 포함된 16진수 문자열만 일치시키면 되는 시나리오가 있습니다.다른 모든 항목이 일치하면 안 됩니다.예:
checkForHexRegExp.test("112345679065574883030833"); // => false
checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF"); // => false
checkForHexRegExp.test("45cbc4a0e4123f6920000002"); // => true
내 사용 사례는 16진수 문자열 집합으로 작업 중이며 mongodb 개체인 문자열만 유효성을 검사하려는 경우입니다.신분증.
다음 정규식을 사용할 수 있지만 제대로 작동하지 않습니다.
checkForHexRegExp = /^(?=[a-f\d]{24}$)(\d+[a-f]|[a-f]+\d)/i
예:
> checkForHexRegExp.test("112345679065574883030833")
false
> checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF")
false
> checkForHexRegExp.test("45cbc4a0e4123f6920000002")
true
하지만, 제가 언급했듯이,112345679065574883030833
,FFFFFFFFFFFFFFFFFFFFFFFF
또한 유효한 16진수 표현입니다.
사용해야 합니다. /^[a-f\d]{24}$/i
위의 모든 테스트를 통과하기 때문입니다.
mongodb Object와만 일치하는 정규식이 필요합니다.신분증
만약 당신이 그것이 필요하다면, 당신은 무엇이 mongodb Object를 구성하는지 정확히 지정해야 할 것입니다.ID. ID에 적합한 정규식 문자열을 만들 수 있습니다.
이것은 기술적으로 js에서 작동해야 합니다.
var myregexp = /^[0-9a-fA-F]{24}$/;
subject = "112345679065574883030833";
if (subject.match(myregexp)) {
// Successful match
} else {
// Match attempt failed
}
기술적으로, 질문의 모든 예제는 잠재적으로 유효한 ObjectId일 수 있습니다.만약 당신이 약간의 추가적인 검증을 추가해야 하고 정규식이 충분하지 않다면, 나는 처음 4바이트가 유효한 타임스탬프인지 확인하는 것을 제안합니다.특정 기간(예: 프로젝트가 시작된 이후) 동안 ObjectId가 생성되었는지 확인할 수도 있습니다.자세한 내용은 ObjectId 설명서를 참조하십시오.
개체에 다른 타임스탬프 필드가 있는 경우 두 시간이 모두 매우 가까운지 확인할 수도 있습니다.
참고로 MongoDB 셸에서 ObjectId::getTimestamp() 메서드를 사용하여 ObjectId에서 타임스탬프를 추출할 수 있습니다.
저는 이런 일을 할 것입니다.
function validateObjectId(id)
{
var bool=false;
if(id.length==24) bool=/[a-f]+/.test(id);
return bool;
}
> validateObjectId("112345679065574883030833")
false
> validateObjectId("FFFFFFFFFFFFFFFFFFFFFFFF")
false
> validateObjectId("45cbc4a0e4123f6920000002")
true
> validateObjectId("45cbc4a0e4123f6920")
false
언급URL : https://stackoverflow.com/questions/20988446/regex-for-mongodb-objectid
'programing' 카테고리의 다른 글
NuGet의 패키지 위치를 변경할 수 있습니까? (0) | 2023.05.05 |
---|---|
WPF 창에서 외부 앱 호스팅 (0) | 2023.05.05 |
MongoDB: 배열의 항목 수 카운트 (0) | 2023.05.05 |
인덱스를 생성하지 않도록 Doctrine에 지정하는 방법 (0) | 2023.05.05 |
순서가 다른 PostgreSQL DISTING ON입니다. (0) | 2023.04.25 |