-1

我正在使用以下功能只允许数字。

if (empty($VAT) || (!(ctype_digit($VAT)))) {
    $mistakes[] = 'ERROR - Your title is either empty or should only contain NUMBERS starting with a 4.';

有没有办法可以添加/修改此函数以仅接受 10 位数字并且它必须以数字 4 开头?

4

4 回答 4

1

preg_match()是你要找的:

<?php
header('Content-Type: text/plain; charset=utf-8');

$number1 = '4123456789';
$number2 = '3123456789';

$regex = '/^4\d{9}$/';
// ^ test pattern: 4 in begining, at least 9 digits following.

echo $number1, ': ', preg_match($regex, $number1), PHP_EOL;
echo $number2, ': ', preg_match($regex, $number2), PHP_EOL;
?>

输出:

4123456789: 1
3123456789: 0

更新来源:

if (!preg_match('/^4\d{9}$/', $VAT)) {
    $mistakes[] = 'ERROR - Your title is either empty or should only contain NUMBERS starting with a 4.';
}

对于可变位数,请使用以下正则表达式:'/^4\d{1,9}$/'.

于 2013-07-31T08:46:16.107 回答
1

您可以为此使用正则表达式:

if(preg_match('/^4\d{9}$/', $VAT) == 0){
   $mistakes[] = 'ERROR - Your title is either empty or should only contain NUMBERS starting with a 4.';
}

如果您需要匹配任何其他字符串或数字模式,这是一个您可以测试您的正则表达式的网站:regexpal.com它有指针和教程以及帮助您学习如何匹配字符串模式和测试您自己的正则表达式的一切表达式

于 2013-07-31T08:48:10.177 回答
1

使用preg_match并返回匹配或布尔值

preg_match('/^[4]{1}[0-9]{9}$/', $VAT, $matches);

和替代使用:

$VAT = "4850999999";

if (preg_match('/^[4]{1}[0-9]{9}$/', $VAT))
    echo "Valid";
else
    echo "Invalid";

方法

^[4]从数字 4(四)开始

{1} 初始数量限制

[0-9]允许的字符

{9}第一个数字后需要 9 个个位

于 2013-07-31T08:53:32.867 回答
0

也许不是最好的方法,但使用 REGEX 你可以做到。

这是一种方式

preg_match('/4[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/', $string, $matches);

其中 $string 是您要检查的字符串,$matches 是保存一致结果的位置。

于 2013-07-31T08:46:02.837 回答