# A string that must match the specified pattern
schema:
  type: string
  pattern: ^[a-zA-Z0-9_]*$
```

### number/integer

The **number/integer** types allow the description of various number formats through a combination of the **type** and **format** attributes, along with a number of attributes for validating the data, the spec should cover most use cases.

Available formats are:

<Table
  title="Numeric Data Types and Formats"
  columns={[
    { key: "type", header: "Type" },
    { key: "format", header: "Format" },
    { key: "explanation", header: "Explanation" },
    { key: "example", header: "Example" }
  ]}
  data={[
    {
      type: "number",
      format: "",
      explanation: "Any number integer/float at any precision.",
      example: "**10** or **1.9** or **9223372036854775807**"
    },
    {
      type: "number",
      format: "float",
      explanation: "32-bit floating point number.",
      example: "**1.9**"
    },
    {
      type: "number",
      format: "double",
      explanation: "64-bit floating point number.",
      example: "**1.7976931348623157**"
    },
    {
      type: "integer",
      format: "",
      explanation: "Any integer number.",
      example: "**2147483647** or **9223372036854775807**"
    },
    {
      type: "integer",
      format: "int32",
      explanation: "32-bit integer.",
      example: "**2147483647**"
    },
    {
      type: "integer",
      format: "int64",
      explanation: "64-bit integer.",
      example: "9223372036854775807"
    }
  ]}
  rowKeyField="format"
/>

Below are some examples of defining **number/integer** types:

```yaml