【问题标题】:PHP preg_match with a single character stringPHP preg_match 与单个字符串
【发布时间】:2018-04-17 13:25:16
【问题描述】:

我在使用正则表达式时遇到了问题(这绝对不是我的强项,所以请对我温柔一点)

这不匹配:

    preg_match('/^[a-zA-Z].[a-zA-Z0-9\ _]*$/', 'n');

我不明白为什么。在多个字符的字符串上似乎没问题,只是当它是一个字符时它不匹配。

我试图确保我的字符串以一个字母(大写或小写)开头,后跟 0 个或多个字符,每个字符是:字母(大写或小写)、数字、空格或下划线。

有人能告诉我吗?谢谢

【问题讨论】:

  • 那是因为您至少需要 2 个字符。第一个匹配[a-zA-Z],第二个匹配.regex101.com你自己看。

标签: php regex


【解决方案1】:

您的模式实际上要求至少存在 两个 字符:

^[a-zA-Z].[a-zA-Z0-9\ _]*$

[a-zA-Z] 术语匹配一个字母,后面的点 . 匹配一个其他字符。所以下面的调用会成功,有两个字符串:

preg_match('/^[a-zA-Z].[a-zA-Z0-9\ _]*$/', 'nn');

如果您打算创建一个匹配前导字母、后跟零个或多个字母、数字、反斜杠、空格或下划线的模式,请考虑使用以下内容:

preg_match('/^[a-zA-Z][a-zA-Z0-9\ _]*$/', 'n');

这里,我已经删除了点,所以现在上面的调用会成功。

【讨论】:

  • 这解决了我的问题。我显然需要比目前更好的理解。谢谢你们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多