【问题标题】:PHP, how to check for uppercase/lowercase/numbers/special in regex [duplicate]PHP,如何在正则表达式中检查大写/小写/数字/特殊[重复]
【发布时间】:2016-02-09 01:41:33
【问题描述】:

我正在尝试创建一个类来验证传递给函数的参数,但只有原始值。到目前为止,我已经完成了整数、布尔值和浮点数。但是,使用我的字符串函数,我还希望能够传入有关允许的字符集的参数。 喜欢:

  • 允许大写
  • 允许小写
  • 允许的数字
  • 允许的特殊字符

但是,我不知道如何测试它。我试过用正则表达式来做,但我最好的试验效果不太好。

任何朝着正确方向的推动都会有很大的帮助。

请注意,我使用的是旧版本的 PHP - 5.1.2

【问题讨论】:

  • 对不起。是的,当然有。我使用将素数相乘来使用多个标签,然后在函数内部使用模来确定给定的标志。我已经实现了所有最小/最大尺寸代码。下次我会发布我尝试过的内容。
  • @AlanMoore 这不是链接问题的副本。它与密码强度无关。 OP想要检查字符串是否由我理解的某些(允许的)字符组成。
  • @bobblebubble:你说得对,我很仓促。但这个问题太基本了,我认为不值得重新讨论,对吗? (提问者无意冒犯;这不是一个的问题,但已经被问过很多次了。)

标签: php regex


【解决方案1】:

取决于什么特价。可以试试这个并与preg_match一起使用。

preg_match('/^[[:alnum:][:punct:]]+$/', $str)

查看demo at regex101

  • [:alnum:] 匹配 [a-zA-Z0-9]
  • [:punct:] 匹配 [!"#$%&'()*+,\-./:;<=>?@[\\\]^_{|}~] 和反引号。
  • +^ 开始到$ 结束还有一个或多个

See more posix classes

【讨论】:

  • 完美,我一回到电脑就试试这个。不过,我会立即将其标记为,谢谢!
  • 欢迎你@JoshuaaM
【解决方案2】:

试试这个:

if(!preg_match('/[.\s]/', $string))
{
  // it contains any single character except dot and white space
  // you can change not permitted list on your demand
}

【讨论】:

  • 谢谢。我喜欢它,我会在我的最终正则表达式字符串中添加一些这样的味道,谢谢。
  • 没问题,@JoshuaaM
猜你喜欢
  • 2014-01-29
  • 2011-01-22
  • 2016-02-13
  • 2021-10-09
  • 2018-06-27
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多