Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式不匹配数字_Php_Regex_Preg Match - Fatal编程技术网

Php 正则表达式不匹配数字

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 {

我试图用php验证数据。我只希望输入的是数字。我已经尝试了每一种变化,但无法使其发挥作用。我有什么遗漏吗?它将继续返回false

这是我正在使用的代码的简化版本

$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,这就是为什么我们有函数参数:)