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

正则表达式匹配字母+;数字作为单独的单词(javascript),javascript,regex,Javascript,Regex,我有以下regexp: (a | b | c | d | k)s?-?\d{1,2} 这或多或少是正确的。它应该匹配:字母a、b、c、d或k与一个或两个数字。例如: a1 k12 a-2 a1.//应该匹配 a1测试//应匹配 但问题是,它应该只匹配那些作为单独单词的项目,而不是在一个单词内。例如,它不应与以下内容匹配: abolsa1 阿莱克蒂 阿博尔萨124 ABOLSA12AB vērtība 428 您可以使用\b检测单词边界: \b(a|b|c|d|k)\s?-?\d{1,

我有以下regexp:

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

这或多或少是正确的。它应该匹配:
字母a、b、c、d或k与一个或两个数字
。例如:

  • a1
  • k12
  • a-2
  • a1.//应该匹配
  • a1测试//应匹配
但问题是,它应该只匹配那些作为单独单词的项目,而不是在一个单词内。例如,它不应与以下内容匹配:

  • abolsa1
  • 阿莱克蒂
  • 阿博尔萨124
  • ABOLSA12AB
  • vērtība 428

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

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

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

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

使用
\b
匹配单词边界

\b(a|b|c|d|k)\s?-?\d{1,2}\b
我基本上在原始正则表达式的末尾和开头添加了
\b
。这意味着开始和结束必须是单词边界

你可以把单词边界想象成

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

(?使用
\b
匹配单词边界

\b(a|b|c|d|k)\s?-?\d{1,2}\b
我基本上在原始正则表达式的末尾和开头添加了
\b
。这意味着开头和结尾必须是单词边界

你可以把单词边界想象成

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

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

此外,使用字符类而不是组,效率更高:

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

在线试用。

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

此外,使用字符类而不是组,效率更高:

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

在线试试。

其他答案都很好。我想我会添加我的答案,虽然略有不同,但也使用了单词boundary
\b
的概念

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


其他答案在这里也很好。我想我会添加我的答案,虽然略有不同,但也使用了单词boundary
\b
的概念

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