【问题标题】:regex number OR period正则表达式数字或期间
【发布时间】:2015-04-01 14:36:57
【问题描述】:

我的正则表达式有问题。我正在尝试找到字母和数字/句点/连字符的组合。所以它总是以一个大写字母开头,后跟一个数字、句点或连字符,然后是一个空格。所以所有这些都应该工作

  • D7
  • A.
  • H-

但这些不应该

  • GJ
  • G6.(第二个参数后面没有空格)

目前我正在尝试这个但没有成功

[A-Z]{1}\d{1}|\.\s

【问题讨论】:

  • [A-Z]{1}\d{1}|\.\s
  • 声明followed by a space 是指空格字符还是\s 表示的任何字符?因为它意味着空格、制表符或输入字符。

标签: regex hyphen character-class


【解决方案1】:

你需要一个字符类:

(?<= |^)[A-Z][\d.-](?= |$)

demo

小提示:字符类开头或结尾的连字符是文字​​连字符(不是范围)。

其他次要仅供参考:量词 {1} 是多余的/隐含的 - 如果添加它没有区别,所以不要(正则表达式已经很难阅读)。

【讨论】:

  • @Jorge 打错字了——我的视力不太好:/ 现已修复——谢谢。
  • 太棒了,第一个似乎有效。我稍微改变了一下,在末尾添加了一个空格[A-Z][\d.-]\s
  • @NickPrice 请记住,\s 控制字符不仅表示空格,还表示输入或制表符,因此波希米亚(第一个)提供的答案不需要任何更改,因为它已经包含正则表达式末尾的空格。
  • 问题是,Bohemia 提供的那个选择了 QF8406 之类的东西(或者它在在线正则表达式测试器上,选择了 F8)。如果它只有 2 个字符长,我需要它来匹配,所以空间有助于解决这个问题。有没有其他办法解决这个问题?
  • @NickPrice 我添加了环顾四周以断言它是一个独立的“词”。请参阅链接的演示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多