MCPcopy
hub / github.com/pocketbase/pocketbase / RandomStringByRegex

Function RandomStringByRegex

tools/security/random_by_regex.go:27–50  ·  view source on GitHub ↗

RandomStringByRegex generates a random string matching the regex pattern. If optFlags is not set, fallbacks to [syntax.Perl]. NB! While the source of the randomness comes from [crypto/rand] this method is not recommended to be used on its own in critical secure contexts because the generated length

(pattern string, optFlags ...syntax.Flags)

Source from the content-addressed store, hash-verified

25//
26// This function is inspired by github.com/pipe01/revregexp, github.com/lucasjones/reggen and other similar packages.
27func RandomStringByRegex(pattern string, optFlags ...syntax.Flags) (string, error) {
28 var flags syntax.Flags
29 if len(optFlags) == 0 {
30 flags = syntax.Perl
31 } else {
32 for _, f := range optFlags {
33 flags |= f
34 }
35 }
36
37 r, err := syntax.Parse(pattern, flags)
38 if err != nil {
39 return "", err
40 }
41
42 var sb = new(strings.Builder)
43
44 err = writeRandomStringByRegex(r, sb)
45 if err != nil {
46 return "", err
47 }
48
49 return sb.String(), nil
50}
51
52func writeRandomStringByRegex(r *syntax.Regexp, sb *strings.Builder) error {
53 // https://pkg.go.dev/regexp/syntax#Op

Callers 4

TestRandomStringByRegexFunction · 0.92
InterceptMethod · 0.92
FindSetterMethod · 0.92

Calls 3

writeRandomStringByRegexFunction · 0.85
ParseMethod · 0.80
StringMethod · 0.45

Tested by 1

TestRandomStringByRegexFunction · 0.74

Used in the wild real call sites across dependent graphs

searching dependent graphs…