Php 正则表达式只允许1个字符 $rex='/^[^

Php 正则表达式只允许1个字符 $rex='/^[^,php,regex,Php,Regex,表达式后面有$,开头有^,这意味着您正接受一个字符 编辑(根据评论): 通过将输入字段与此匹配(如果匹配,则表示没有无效字符),您可以尝试查看输入字段是否仅包含有效的: $rex='/^[^ |#]/'; 这样,如果正则表达式匹配,则表示您有无效字符。您将需要'/^[^ |#]*$/i' 例如: $rex = '/[<,"@$?=>|;#]/'; $valid='Hello'; $invalid='h^表示行的开头 $表示行尾 []表示匹配一组字符中的一个 您将匹配该列表中包含且

表达式后面有
$
,开头有
^
,这意味着您正接受一个字符

编辑(根据评论):


通过将输入字段与此匹配(如果匹配,则表示没有无效字符),您可以尝试查看输入字段是否仅包含有效的

$rex='/^[^ |#]/';
这样,如果正则表达式匹配,则表示您有无效字符。

您将需要
'/^[^ |#]*$/i'

例如:

$rex = '/[<,"@$?=>|;#]/';
$valid='Hello';

$invalid='h^表示行的开头
$表示行尾
[]表示匹配一组字符中的一个


您将匹配该列表中包含且仅包含一行的行。

您可能实际需要的是:

'Hello' gives 1
'h<i' gives 0
$rex='/[|#]*$/i';
这是一种荒谬的过度复杂。比如通过计算房间里有多少东西不是大象来确定房间里是否有大象,然后看看这个数字是否与房间里的东西的数量相同。(而且,
/i
修饰符在任何时候都不能完成任何事情。)也许
“/(.*)[^ |##].+$/i”


不知道您想做什么,您只需要一个字符。如果您需要多个字符,请重复该模式,如下所示(一次或多次):

$rex='/^[^ |#]*$/i';

您可能希望同时删除“^”和“$”。如果在保留“^”的同时删除“$”,您将只匹配表达式开头的一个字符。删除“^”和“$”意味着它将验证任何字符串,只要它包含有效字符,因此不需要。您可以尝试查看输入字段是否处于打开状态通过将正则表达式与以下内容进行匹配,您可以获得有效字符:
“/^[^ |#]/”
。这样,如果正则表达式匹配,则表示您具有无效字符。无效正则表达式不显示匹配项,无论输入的输入是否正确。例如,我的用户名是假preg_match()现在没有任何匹配。我的键盘上没有字符提供匹配。这对我来说似乎很奇怪。我将在一个为我工作的样本中编辑。所有这些随机字符都是我希望禁止的字符。如果出现其中的任何1个字符,输入被拒绝。如果不存在,输入被接受。所以我必须在中间逃出美元符号。不,因此,您必须限定集合以请求倍数。在排除集合后放置+或*表示您分别想要一个或多个或零个或多个。
$rex = '/[<,"@$?=>|;#]/';
$valid = 'Hello';
$invalid = 'h<i';
$regex = '/^[^<,"@$?=>|;#]+$/i';

print "'$valid' gives ".preg_match($regex, $valid)."\n";
print "'$invalid' gives ".preg_match($regex, $invalid)."\n";
'Hello' gives 1
'h<i' gives 0
$rex = '/[<,"@$?=>|;#]/';
$rex = '/^[^<,"@?=>|;#]*$/i';
 $rex = '/^[^<,"@?=>|;#]+$/i';
 $rex = '/^[^<,"@?=>|;#]*$/i';