【发布时间】:2013-12-09 14:59:30
【问题描述】:
只是尝试编写允许输入通配符的输入验证模式。输入字段最多 9 个字符,应遵循以下规则:
* + 1- 8 charcters
1- 8 chars + *
* + 1-7 chars + *
我已经使用正则表达式文档编写了这个正则表达式,并在其中一个正则表达式测试器上对其进行了测试。
\*{1}[0-9]{1,7}\*{1}|[0-9]{1,8}\*{1}|\*{1}[0-9]{1,8}|[0-9]{9}
所有这些都正确匹配
123456789
*1*
*12*
*123*
*1234*
*12345*
*123456*
*1234567*
1234567*
123456*
12345*
1234*
123*
12*
1*
*1
*12
*123
*1234
*12345
*123456
*1234567
*12345678
但是当我不想要它时它也匹配。例如,它在此 *123456789* 中找到 2 个匹配项,第一个匹配项是 *12345678,第二个匹配项是 9*
在这种情况下,我不想找到任何匹配项。整个字符串要么匹配其中一个模式,要么不匹配。如何做到这一点?
【问题讨论】:
-
您使用的是什么正则表达式风格,不需要您转义星号?
-
抱歉,复制粘贴错误
-
这里是编写正则表达式的好工具。 debuggex.com
标签: regex