【问题标题】:Matching ONLY Numbers / Persian Characters And Latin仅匹配数字/波斯字符和拉丁文
【发布时间】:2014-04-05 12:35:43
【问题描述】:

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

我写了以下代码

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

并且工作正常。

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

有什么想法吗?

【问题讨论】:

    标签: php regex


    【解决方案1】:

    只需在您的正则表达式中使用negative lookahead 断言来检查是否没有这样的字符。把它放在你的正则表达式的开头。我的意思是在/ 之后。

    (?!.*[(@#!%$&*)])
    

    例如:

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

    【讨论】:

    • 仍然无法正常工作。我在我的输入中输入 ` تست@!#Test123 `,preg_match 返回 true
    • @user2077916 我以为你只匹配一个字符!请检查我更新的正则表达式。我认为您的\x{0600}-\x{06FF} 是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多