正则表达式匹配字母+数字作为单独的单词(javascript)

问题描述 投票:0回答:4

我有以下正则表达式:

  • (A | B | C | d | K)?\ S - \ d {1,2}

https://regex101.com/r/r82AyN/2/

它或多或少是正确的。它应该匹配:letter a,b,c,d or k with one or two numbers。例如:

  • A1
  • K12
  • a2
  • A1。 //应该匹配
  • a1测试//应匹配

但问题是它应该只匹配那些作为单独单词但不在单词中的项目。例如,它不应匹配这些:

  • abolsa1
  • a1slikti
  • 取消124
  • abols a12ab
  • 价值428
javascript regex
4个回答
1
投票

您可以使用\b检测字边界:

\b(a|b|c|d|k)\s?-?\d{1,2}\b

1
投票

使用\b来匹配单词边界!

\b(a|b|c|d|k)\s?-?\d{1,2}\b

我基本上在最后添加\b并开始使用原始正则表达式。这意味着开始和结束必须是单词边界。

您可以将单词边界视为

(?<=\w)(?=\W)|(?<=\W)(?=\w)

Demo


1
投票

将你的正则表达式包装在\b中,这意味着在开头和结尾都有一个单词边界。

此外,使用字符类而不是组,它更有效:

\b[abcdk]\s?-?\d{1,2}\b

在网上试试here


1
投票

其他答案很棒。以为我会添加我的略有不同,但也使用单词边界\b概念

\b[abcdk]-?\d{1,2}\b

Demo

© www.soinside.com 2019 - 2024. All rights reserved.