我需要匹配数字和字母,但我不想只匹配数字。
所以,“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 :(得分:0)
您是否尝试过包含此内容的模式:
[0-9]*[a-z]+[0-9a-z]*
这至少应匹配一个字母和任意数字的数字。