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

时间:2018-04-04 08:49:31

标签: javascript regex

我有以下正则表达式:

  • (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
  • A-2
  • A1。 //应该匹配
  • a1 test //应匹配

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

  • abolsa1
  • a1slikti
  • abolsa 124
  • abols a12ab
  • vērtība428

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

使用\b来匹配字边界!

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

我基本上在原始正则表达式的末尾添加了\b。这意味着开头和结尾必须是单词边界。

您可以将单词边界视为

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

Demo

答案 2 :(得分:1)

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

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

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

在线试用here

答案 3 :(得分:1)

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

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

Demo