在 JavaScript 中检查与 UUIDv4 的模式匹配

Check for pattern match with UUIDv4 in JavaScript

我正在寻找与 uuid 前后特定字符串的模式匹配。

例如user/a24a6ea4-ce75-4665-a070-57453082c256/photo/a24a6ea4-ce75-4665-a070-57453082c256

const regexExp = new RegExp(/^user\/[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i);

console.log(regexExp.test("user/a24a6ea4-ce75-4665-a070-57453082c256")); // true

console.log(regexExp.test("user/a24a6ea4-ce75-4665-a070-57453082c256/photo")); // false

我期待的是匹配user/{uuid}/*如何在uuid后面使用通配符?

如果你想匹配两者,你可以省略使用 RegExp 构造函数,因为你已经在使用文字,并且可以选择匹配 / 后跟字符串的其余部分。

[4]可以只是4

const regexExp = /^user\/[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}(?:\/.*)?$/i;

参见regex101 demo

const regexExp = /^user\/[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}(?:\/.*)?$/i;

[
  "user/a24a6ea4-ce75-4665-a070-57453082c256",
  "user/a24a6ea4-ce75-4665-a070-57453082c256/photo",
  "user/a24a6ea4-ce75-4665-a070-57453082c256asdasd"
].forEach(s =>
  console.log(`${s} --> ${regexExp.test(s)}`)
);