MasterFormat 分类正则表达式

MasterFormat Classification Regex

我需要一个验证 MasterFormat 分类字符串的方法,该字符串由一组数字和一个标题字符串组成。

字符串开头的数字必须是:

3 组 2 位数字,由 spaces 分隔:

09 68 13

最后一组数字也可以是小数:

09 68 13.36

后跟 space

然后一串单词来表示标题,每个单词的第一个字母要大写

09 68 13 Tile Carpeting

09 68 13.36 Tile Carpeting

我有一个似乎可行的开始,但我似乎无法正确添加单词字符串。

\d{2}\s\d{2}\s\d{2}(\.\d{2}){0,1}

这将在 Laravel 规则中验证。

您可以使用

^\d{2}\s\d{2}\s\d{2}(?:\.\d{2})?\s+\p{Lu}\p{L}*(?:\s+\p{Lu}\p{L}*)*\s*$

regex demo详情:

  • ^ - 字符串开头
  • \d{2}\s\d{2}\s\d{2} - 两位数,空格,两位数,空格,两位数
  • (?:\.\d{2})? - 一个可选的非捕获组,匹配 1 次或 0 次出现的 .,然后是两位数
  • \s+ - 1+ 个空格
  • \p{Lu}\p{L}* - 一个大写字母后跟 0+ 个字母
  • (?:\s+\p{Lu}\p{L}*)* - 0 次或多次出现 1+ 个空格后跟大写字母后跟 0+ 个字母
  • \s* - 0+ 个空格
  • $ - 字符串结尾。