【问题标题】:Regex to match any letter, space or specific number正则表达式匹配任何字母、空格或特定数字
【发布时间】:2017-08-29 17:21:19
【问题描述】:

我正在尝试创建一个正则表达式来匹配所有字母或空格或特定数字。

这就是我所拥有的。

([a-zA-Z\s24]*)
 #但这是匹配 2 或 4,我只需要 24

前任:
- asdffasf asfasdf #应该匹配 asdffasf asfasdf
- asdf asdf asdf 24 #应该匹配 asdf asdf asdf 24
- asdf24asdfasdf as #should match asdf24asdfasdf as
- asdfadf2 asdf #应该匹配 asdfadf
- asdfasdf kljl 6 #应该匹配 asdfasdf kljl

https://regex101.com/r/iNWuRb/1

【问题讨论】:

  • 应该是:([a-zA-Z\s]+|24)
  • 试试^(?:24|[a-zA-Z\s])+
  • 在这个网站上试试。它可以帮助regex tester

标签: php regex preg-match pcre


【解决方案1】:

您将一系列字符放入字符类中。字符类旨在匹配字符类中定义的单个字符,因此,您所做的将无法正常工作。

您需要使用一个分组结构、一个交替组和acc。对于预期的匹配,您只需要在字符串的开头进行匹配:

^(?:24|[a-zA-Z\s])+

regex demo

详情

  • ^ - 字符串开头
  • (?:24|[a-zA-Z\s])+ - 一次或多次出现:
    • 24 - 一个子字符串 24
    • | - 或
    • [a-zA-Z\s] - ASCII 字母或空格

【讨论】:

  • 是的,我认为这很接近,但现在我需要对第二个结果进行分组。第 1 组应该是所有字母(或 24),直到它碰到一个数字。第 2 组应该是数字。
【解决方案2】:

我想你想要:

([a-zA-Z\s]*|24)

然后你得到你的 A-Z\s 组或数字 24。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2019-10-14
    • 2014-03-25
    相关资源
    最近更新 更多