人口普查区域的正则表达式

Regular Expression for Census Tracts

我正在努力确保通过 google 表单正确解析表单输入,并且我试图使用我有限的正则表达式知识来确保人们不会错误地输入大片。

通常会在示例中给出一个小册子,例如 5129.01 该县的所有区域都以 5 开头,第二个字符为 0 或 1,如果为 1,则第三个字符为 [0 - 3],否则为 [0-9]。

我有一个有效的表达式,但我想确保如果第二个字符是 1,用户将无法输入像 5150.01 这样的区域

这是我拥有的: ^5[0-1]([0-9]{2})(\.([0-9]{2}))?$ 这是行不通的: ^5[0-1](?(?<=1)\d|[0-3])(\.([0-9]{2}))?$

任何帮助将不胜感激谢谢

我希望这能回答你的问题,请发表评论,我可以相应地进行编辑。

模式:

^(?:51[0-3]|50[0-9])[0-9](?:\.[0-9]{1,2})?$

视觉表示:

HTML 实施:

<input name="example" pattern="^(?:51[0-3]|50[0-9])[0-9](?:\.[0-9]{1,2})?$">

值验证示例:

+----------+--------+
|  Value   | Status |
+----------+--------+
|       51 | fail   |
|      510 | fail   |
|     5101 | pass   |
|     5111 | pass   |
|     5121 | pass   |
|     5131 | pass   |
|     5141 | fail   |
|    5102. | fail   |
|   5102.1 | pass   |
|  5102.12 | pass   |
| 5102.123 | fail   |
|       50 | fail   |
|      500 | fail   |
|     5001 | pass   |
|     5011 | pass   |
|     5021 | pass   |
|     5031 | pass   |
|     5041 | pass   |
|     5051 | pass   |
|     5061 | pass   |
|     5071 | pass   |
|     5081 | pass   |
|     5091 | pass   |
|    50911 | fail   |
|    5092. | fail   |
|   5092.1 | pass   |
|  5092.12 | pass   |
| 5092.123 | fail   |
+----------+--------+