【问题标题】:Checking String only letters and numbers except both仅检查字符串中的字母和数字,但两者除外
【发布时间】:2015-01-07 08:18:45
【问题描述】:
"Hello" returns true
"12345" returns true
"Hello1" returns false
"123H" returns false

正则表达式可以只检查字母和数字,但两者除外?

检查PHP的功能?

【问题讨论】:

  • 你的问题实在是看不懂

标签: php regex


【解决方案1】:

正则表达式:

/^[A-za-z]*|[0-9]*$/

检查行首,然后是任意数量的字母或任意数量的数字,然后是行尾。

空行将返回 true。如果这是一个问题,请将 * 更改为 +

【讨论】:

    【解决方案2】:

    你可以使用类似这样的东西:^([A-Za-z]+)|([0-9]+)$。这将确保字符串要么完全由字母组成,要么完全由数字组成,但不能同时包含两者。

    可以查看正则表达式here

    【讨论】:

    • 如果起始字母是“字母”,则不能正常工作 *“123H”返回 false *
    • @GGu:你能扩展你的评论吗?我不明白你的意思。
    【解决方案3】:
    ^(?=(?:\d+|[a-zA-Z]+)$)[a-zA-Z0-9]+$
    

    另一种变体。参见演示。

    https://regex101.com/r/sH8aR8/11

    $re = "/^(?=(?:\\d+|[a-zA-Z]+)$)[a-zA-Z0-9]+$/m";
    $str = "Hello\n12345\nHello1\n123H";
    
    preg_match_all($re, $str, $matches);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多