【发布时间】:2014-03-13 20:24:36
【问题描述】:
在此输入字段中,我希望该用户无法使用以下特殊标记:{}[]$
现在我的代码中有以下解决方案,但问题是它不允许 ä、ö、ü 或其他类似的字符。
if (preg_match('/^[-a-zA-Z0-9 .]+$/', $string) || empty($string)){
echo "Everything ok!";
else{
echo "Everything not ok!";}
因此,我尝试使用 preg_match('/^[\p{L}\p{N} .-]+$/', $string) 因为据说它允许来自任何语言的字符,但该解决方案除外不允许像@和*这样的标记,我认为这可能是需要的。那么任何允许除 {}[]$ -marks 之外的任何东西的解决方案?非常感谢任何帮助,因为我不知道要写什么才能使它正常工作。
【问题讨论】:
-
为什么不直接将允许的字符添加到字符类中呢?
-
更容易定义允许的内容,而不是不允许的内容
-
"除
{}[]$之外的任何内容" =[^{}[\]$](用^和+$包围以测试整个输入)。听起来没那么难。 -
@Jon:感谢您指出我以前的解决方案之一中的拼写错误。我今天早些时候尝试过那个,但似乎我完全忘记了 \ -mark。难怪它在第一次尝试时给了我错误。非常感谢,对我的失明感到抱歉。
标签: php string preg-match character