【发布时间】:2013-05-23 13:38:07
【问题描述】:
我只需要匹配数字和字母,但我不想只匹配数字。
所以,“a1”应该匹配,“1a”也应该匹配。 “a”应该匹配。 “1”、“1111”、“987”等不应匹配。
<?php
echo preg_match('~^(?![0-9])[0-9a-z]$~', 'a1') . PHP_EOL; // I expect 1
echo preg_match('~^(?![0-9])[0-9a-z]$~', '1a') . PHP_EOL; // I expect 1
echo preg_match('~^(?![0-9])[0-9a-z]$~', '1') . PHP_EOL; // I expect 0
echo preg_match('~^(?![0-9])[0-9a-z]$~', 'a') . PHP_EOL; // I expect 1
我怎样才能达到这些结果?
更新:
它正在工作:
<?php
echo preg_match('~^(?=[a-z]+)|(?![0-9]+)[0-9a-z]+$~', 'a1') . PHP_EOL; // I expect 1
echo preg_match('~^(?=[a-z]+)|(?![0-9]+)[0-9a-z]+$~', '1a') . PHP_EOL; // I expect 1
echo preg_match('~^(?=[a-z]+)|(?![0-9]+)[0-9a-z]+$~', '1') . PHP_EOL; // I expect 0
echo preg_match('~^(?=[a-z]+)|(?![0-9]+)[0-9a-z]+$~', 'a') . PHP_EOL; // I expect 1
echo PHP_EOL;
echo preg_match('~[0-9]*[a-z]+[0-9a-z]*~', 'a1') . PHP_EOL; // I expect 1
echo preg_match('~[0-9]*[a-z]+[0-9a-z]*~', '1a') . PHP_EOL; // I expect 1
echo preg_match('~[0-9]*[a-z]+[0-9a-z]*~', '1') . PHP_EOL; // I expect 0
echo preg_match('~[0-9]*[a-z]+[0-9a-z]*~', 'a') . PHP_EOL; // I expect 1
谢谢你们!
【问题讨论】:
-
在
[0-9a-z]之后添加+。 -
是的,我忘了加号。谢谢!
-
不客气 Thom Thom Thom! ^^
标签: php regex preg-match regex-negation regex-lookarounds