只是尝试编写允许输入野生字符的输入验证模式 . 输入字段最多为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
但是当我不想要它时它也匹配 . 例如,它在此_426126中找到2个匹配_第一个匹配是 *12345678
,第二个匹配是 9*
我不希望在这种情况下找到任何匹配 . 整个字符串是否匹配其中一个模式 . 怎么做到这一点?
2 回答
您可以使用开始和结束字符串锚点:
http://www.regular-expressions.info/anchors.html
所以,你的正则表达式将是这样的(注意第一个和最后一个符号):
使用anchors确保正则表达式始终与整个字符串匹配:
请注意括号,以确保交替包含在组中:
此外,
{1}
总是多余的 - 每个标记一个匹配是默认值 .