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+ 个空格
$
- 字符串结尾。
我需要一个验证 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+ 个空格$
- 字符串结尾。