我需要一个方法来验证 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/