Php 正则表达式不匹配数字
我试图用php验证数据。我只希望输入的是数字。我已经尝试了每一种变化,但无法使其发挥作用。我有什么遗漏吗?它将继续返回false 这是我正在使用的代码的简化版本Php 正则表达式不匹配数字,php,regex,preg-match,Php,Regex,Preg Match,我试图用php验证数据。我只希望输入的是数字。我已经尝试了每一种变化,但无法使其发挥作用。我有什么遗漏吗?它将继续返回false 这是我正在使用的代码的简化版本 $text1 = $_POST['textbox1']; function textBox() { $regexp="/^[0-9]+$/"; if (preg_match($regexp, $text1)) { return TRUE; } else {
$text1 = $_POST['textbox1'];
function textBox()
{
$regexp="/^[0-9]+$/";
if (preg_match($regexp, $text1))
{
return TRUE;
}
else
{
echo'<script type="text/javascript">alert("enter a valid number.")</script>';
return FALSE;
}
}
if (isset($_POST['submit']))
{
if (! textBox())
{
return FALSE;
}
else
{
echo'<script type="text/javascript">alert("well done")</script>';
return TRUE;
}
}
$text1=$\u POST['textbox1'];
函数textBox()
{
$regexp=“/^[0-9]+$/”;
if(预匹配($regexp,$text1))
{
返回TRUE;
}
其他的
{
回显“警报”(“输入有效数字”);
返回FALSE;
}
}
如果(isset($_POST['submit']))
{
如果(!textBox())
{
返回FALSE;
}
其他的
{
回音“警惕(“做得好”);
返回TRUE;
}
}
编辑
好吧,我把(以前工作过的)代码弄得一团糟。。是的,你们都是对的。。这是我的变数。。抱歉,伙计们,谢谢你们的帮助你们的正则表达式是正确的。但是您正在检查函数上下文中不存在的
$text1
。将其作为参数传递
另一个选项是使用global
关键字来引用$text1
,如果它没有作为参数传递。它会引起副作用,所以我强烈建议不要这样做
另一个选项(类似于使用global
关键字)是引用superblobal数组$GLOBALS
——与global
相同,这是一种不好的做法 使用以下命令:
if(! textBox($text1)){
...
}
或者这个:
function textBox()
{
global $text1;
...
}
否则,函数textBox()无法访问变量$text1您的问题不是来自正则表达式,而是来自不在函数范围内的
$text1
变量。它不知道$text1
来自何处,因此您的验证会出错。您应该将其作为参数传递给函数,或者在全局变量中的某个位置(不太优雅),它应该可以正常工作
但是,您应该考虑使用诸如或执行函数的功能,而不是依赖正则表达式来完成它。 这应该更高效、更优雅。
正则表达式不是问题所在 您的正则表达式工作正常,因此您的问题存在于其他地方,如以下示例程序所示:$regex = "/^[0-9]+$/";
$input = "100";
preg_match($regex, $input, $matches);
echo var_dump($matches);
()
如果没有完整的代码,就不可能知道问题出在哪里。如何从regExp中删除
^
或/和$
?您需要详细了解@Skippy,因为变量$text1超出了textBox()函数的范围。@Skippy似乎SO和所有其他子网站都存在一些问题。同时看一看1。您正在函数外部设置$text1
的值,除非使用全局设置,否则函数内部无法访问该值。除非你的例子是错误的,否则这在你的第二个例子中如何起作用是个谜。2.$\u POST
提交的数字是否包含额外的空格或非数字?尝试echo
ing$\u POST['textbox1']
在调用函数之前。如果您解释了另一个选项,即全局
@Skippy示例代码很难提供帮助,如果与您的活动代码不同-请发布您的真实代码,只需删除不重要的行并混淆任何个人数据即可。否,我的原则不允许我使用global
关键字:)这是一个选项,是的,但这是一个不好的做法。@Skippy让我猜猜:由于启用了register\u globals
,所以没有参数传递的示例有效?不要使用globals,这就是为什么我们有函数参数:)