正则表达式只允许1个字符

Kdg*_*Dev 2 php regex

$rex = '/^[^<,"@?=>|;#]$/i';
Run Code Online (Sandbox Code Playgroud)

我在使用这个正则表达式时遇到了麻烦.我们的想法是检查输入字段是否存在某些字符,如果存在,则抛出错误.

这个正则表达式为每个超过1个字符的字符串抛出错误.谁能告诉我我做错了什么?

编辑:人们说他们看不到我想用这个正则表达式做什么.我想要做的是如果以下字符之一是输入字符串的一部分,则拒绝输入:

<>,"@?= |;#

EDIT2:JG的"有效"正则表达式可以解决这个问题.

Joã*_*lva 5

你有$后,你的表达和^在开始的时候,这意味着你已经接受正好一个字符.

编辑(根据评论):

你可以试试,看看你的输入字段只有具有有效的字符,通过匹配它反对这个(如果它匹配,这意味着没有无效字符):

$rex = '/^[^<,"@$?=>|;#]+$/i'
Run Code Online (Sandbox Code Playgroud)

您也可以反过来,即使用混沌提供的正则表达式测试输入字段是否包含任何无效字符:

$rex = '/[<,"@$?=>|;#]/';
Run Code Online (Sandbox Code Playgroud)

这样,如果正则表达式匹配,则表示您具有无效字符.