首页 > 解决方案 > MasterFormat 分类正则表达式

问题描述

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

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

3 组 2 位数字,以空格分隔:

09 68 13

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

09 68 13.36

后跟一个空格

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

09 68 13 Tile Carpeting

09 68 13.36 Tile Carpeting

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

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

这将在 Laravel 规则中得到验证。

标签: phpregexlaravelpcre

解决方案


您可以使用

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

请参阅正则表达式演示详情

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

推荐阅读