php - MasterFormat 分类正则表达式

标签 php regex laravel pcre

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

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

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

09 68 13

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

09 68 13.36

后跟一个空格

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

09 68 13 瓷砖地毯

09 68 13.36 瓷砖地毯

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

\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+ 个空格
  • $ - 字符串结尾。

关于php - MasterFormat 分类正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62779203/

相关文章:

Laravel 自定义列,嵌套关系

laravel - laravel Assets 函数的相对路径

php - INSERT 查询根本不添加

PHP 到 PDF 与 DOMPDF

java - 正则表达式在Java中查找特殊字符

php - 如何更改 Laravel 模型表名称

php - 根据sql结果显示行

php - 适用于大量数据的 Google 货币转换器 api

jquery - 如何同时将空格替换为下划线(当我在输入字段中输入文本时)?

regex - Notepad++ - 仅匹配仅包含大写字母(或空格)的行