【发布时间】:2014-04-05 12:35:43
【问题描述】:
我需要一个匹配数字/波斯字符和拉丁 (A-Z) 的正则表达式代码
我写了以下代码
preg_match("/[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]/u",$_POST['input'] )
并且工作正常。
但有一个问题,我不想输入任何 (@,#,!,%,$,&,*) 字符。
有什么想法吗?
【问题讨论】:
我需要一个匹配数字/波斯字符和拉丁 (A-Z) 的正则表达式代码
我写了以下代码
preg_match("/[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]/u",$_POST['input'] )
并且工作正常。
但有一个问题,我不想输入任何 (@,#,!,%,$,&,*) 字符。
有什么想法吗?
【问题讨论】:
只需在您的正则表达式中使用negative lookahead 断言来检查是否没有这样的字符。把它放在你的正则表达式的开头。我的意思是在/ 之后。
(?!.*[(@#!%$&*)])
例如:
preg_match("/^(?!.*[(@#!%$&*)])[A-Za-z\s\x{0600}-\x{06FF}0-9_\.\- ]+$/u",$_POST['input'] )
【讨论】:
\x{0600}-\x{06FF} 是正确的。