我需要找到一个字符串是否按以下方式格式化:
text1,x%;text2,y%
因此,这些字符串必须有效:
example, 10%; test, 22%; another, 90%
another example, 11.5%; yet other example, 91%
another, 11%; other example, 11.2%
example2, 20%
以下内容必须无效:
example3; 10%, test3, 22%; another3, 90%
example4; 20%
example5, 11%; test 5, 123%
another fail example, 11,5%; yet other example, 91%
我知道一些正则表达式但这个验证我甚至不知道如何开始。
编辑:添加了更多示例。
答案 0 :(得分:1)
您可以使用以下正则表达式:
^[\w\s]+,\s*\d+(?:\.\d+)?%(?:;\s*[\p{L}\s]+,\s*\d+(?:\.\d+)?%)*$
请参阅demo
正则表达式解释:
基本上,它由2部分组成,;
之前的部分和其他可选序列。
^
- 字符串的开头[\w\s]+
- 一个或多个字母数字或空白字符,后跟...... ,
- 逗号,然后\s*
- 可选空白\d+(?:\.\d+)?%
- 浮点数或整数(小数部分因?
而可选)和百分号(?:;\s*[\p{L}\s]+,\s*\d+(?:\.\d+)?%)*
- 匹配0或更多序列的第二部分......
;\s*
- 一个分号后跟可选的空格[\p{L}\s]+
- 一个或多个字母(\p{L}
)或空格,\s*
- 逗号后跟可选空格\d+(?:\.\d+)?%
- 浮点数或整数(小数部分是可选的)和百分号$
- 字符串结尾