仅匹配数字/波斯字符和拉丁字符

3

我需要一个正则表达式代码,可以匹配数字/波斯字符和拉丁字母(A-Z)。

我写了以下代码:

preg_match("/[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]/u",$_POST['input'] )

并且它运行良好。

但是有一个问题,我不希望输入包含任何(@,#,!,%,$,&,*)字符。

有什么想法吗?

1个回答

3
在你的正则表达式中使用一个“负向先行断言”,检查是否没有这样的字符。将其放置在正则表达式开头,我是指在/之后。
(?!.*[(@#!%$&*)])

例如:

preg_match("/^(?!.*[(@#!%$&*)])[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]+$/u",$_POST['input'] )

1
仍然无法正常工作。我在输入框中输入تست@!#Test123,而preg_match返回的是true。 - Saeid Khaleghi
1
@user2077916 我以为你只匹配一个字符!请检查我的更新的正则表达式。我假设你的\x{0600}-\x{06FF}是正确的。 - Sabuj Hassan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接