我需要一个正则表达式代码,可以匹配数字/波斯字符和拉丁字母(A-Z)。 我写了以下代码: preg_match("/[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]/u",$_POST['input'] ) 并且它运行良好。 但是有一个问题,我不希望输入包含任何(@,#,!,%,$,&,*)字符。 有什么想法吗?
在你的正则表达式中使用一个“负向先行断言”,检查是否没有这样的字符。将其放置在正则表达式开头,我是指在/之后。(?!.*[(@#!%$&*)]) 例如: preg_match("/^(?!.*[(@#!%$&*)])[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]+$/u",$_POST['input'] )
تست@!#Test123
,而preg_match返回的是true。 - Saeid Khaleghi\x{0600}-\x{06FF}
是正确的。 - Sabuj Hassan