regex - 正则表达式只允许数字、带点的数字、& 和空格
问题描述
我需要一个正则表达式,它只允许数字、空格、精度为 2 的十进制数字和 & 符号。
此正则表达式将用于检查允许多个数字用 & 符号分隔的输入,并且中间可以有空格(可选,但最多一个)。以下是我尝试过的,由于我对正则表达式的理解很差,他们的工作很糟糕。
^(?=.*[0-9])[ &.0-9]+$
但效果不好。
因为像 &&&&&&1 这样的东西会通过检查。
也试过这样的东西,效果也很差
^([0-9]{1,}[.]{0,1}[0-9]{0,2}[ ]{0,1}+[&]{0,1}[ ]{0,1})*?$
以下举例说明了我的预期
12 --->(通过)
12.12 --->(通过)
12 & 129.12 & 11 --- >(通过)
12 & 129. & 11 ---> (不应该通过)
12 & .129 --->(不应通过)
12 & 129..1(不应通过)
12 & 129.111(不应通过)
&&&1(不应该通过)
…………
提前谢谢了
解决方案
为了考虑空间,您可以使用它们使它们成为可选的?
您可以使用匹配 2 个可选空格和 & 符号的重复模式:
^\d+(?:\.\d{2})?(?: ?& ?\d+(?:\.\d{2})?)*$
解释
^
字符串的开始\d+(?:\.\d{2})?
匹配 1 个以上的数字,并且可以选择匹配一个点和 2 个数字(?:
非捕获组[ ]?&[ ]?
匹配一个可选空格(用于[ ]
清楚起见)&
和可选空格d+(?:\.\d{2})?
匹配 1 个以上的数字,并且可以选择匹配一个点和 2 个数字
)*
关闭非捕获组并重复 0+ 次以也允许单个条目$
字符串结束
推荐阅读
- python - 使用两个单独的变量存储嵌套 for 循环中的值
- r - pROC:ROC 曲线上未正确显示灵敏度下限
- python - List comprehension with multiple if-conditions
- spring - spring hatoas 1.1.0 基本 rel 路径被截断
- python - 跳过未找到的字符串 Python
- javascript - 将存储在数组中的日期值更改为两周前
- node.js - Angular CLI [npm install -g @angular/cli] 出现错误 SyntaxError: Unexpected token } in JSON at position
- java - 由于 java.util.concurrent.TimeoutException,Eclipse 2020-06 不断冻结
- git - Git,删除我现在不需要推送的本地提交
- django - 在身份验证类中的 Django REST 框架中向请求添加数据