除了数字0之外的任何字母数字字符的正则表达式

时间:2014-06-18 18:41:26

标签: php regex

对于非零,我有/^[1-9][0-9]*$/和字母数字^[0-9a-zA-Z ]+$,但我不知道如何合并这些。

除了单个0

之外,请帮助使用正则表达式来处理任何字母数字模式

5 个答案:

答案 0 :(得分:3)

您可以使用此模式阻止以0

开头的匹配项
^(?!0)[0-9a-zA-Z ]+$

如果01可以,但不只是0使用此模式

^(?!0$)[0-9a-zA-Z ]+$

答案 1 :(得分:1)

这里你需要的是:

/^[1-9a-zA-Z ]+$/

解释:允许从1到9的数字,从A到Z的char(非敏感情况)和允许的空格。

答案 2 :(得分:1)

没有预见,你可以使用:

^[1-9a-zA-Z][0-9a-zA-Z ]*$

当然,前瞻性更短:

^(?!0$)[0-9a-zA-Z ]+$

答案 3 :(得分:0)

这个问题有很多好的答案。

但考虑到OP的问题,我认为最好的方法是:

(^[1-9a-zA-Z ]$|^[1-9a-zA-Z ][0-9a-zA-Z ]+$)

  • ^[1-9a-zA-Z ]$如果只有一个字符

  • ^[1-9a-zA-Z ][0-9a-zA-Z ]+$如果有多个字符。

答案 4 :(得分:0)

对不起,这些都不起作用,我不得不阅读手册并提出有效的手册。我得到了其他人发布的答案的帮助。

([^0]|[0-9a-zA-Z_ ]{2,}&)

如果一个字符,而不是一个零。如果有一个以上的字符,数字,字母,下划线和空格。

测试如下:

$string0 = 0;
$string1 = 1;
$string2 = 9;
$string3 = '1 - 3 Million'; // is telling this is zero
$string4 = 'false';
$string5 = '0 - 3 Million';
$string6 = '011';
$regex = '([^0]|[0-9a-zA-Z_ ]{2,}&)';
$modifiers = '';
$exp = chr(1) . $regex . chr(1) . $modifiers;
$expresion = $exp;
echo 'CHR(1):'.chr(1).' END';
echo '<br/>';
echo 'EXPRESSION 1:'.$exp.' END';
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string0);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string1);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string2);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string3);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string4);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string5);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string6);

输出

EXPRESSION 1:([^0]|[0-9a-zA-Z_ ]{2,}&) END
Is this non-zero? 0
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1