什么是正则表达式模式 "words with numbers in them" 而不是数字本身

What is the Regex pattern "words with numbers in them" but not a number itself

的正则表达式是什么样子的

输入: Rood 锂离子电池 12 G6

匹配: “路德”“锂离子电池”“G6”

1。 我试过 \b[\w-]+\b /g

但这也匹配“12”!

2.I 尝试过

/([0-9]+)?[a-zA-Zê]/

但这与 G6 不匹配。

我想要所有单词,即使它们中有数字,但我不希望只有数字匹配。这怎么可能。空格也不应成为匹配项的一部分。

"Rood Li-Ion 12 G6" 应成为 3 串 "Rood","Li-Ion","G6"

您可以使用

(?<!\S)(?!\d+(?!\S))\w+(?:-\w+)*(?!\S)

参见regex demo。它匹配空格或字符串 start/end 之间的字符串,并且仅当此非空格块不是纯数字块时才匹配。

此外,它不会像原始正则表达式那样匹配连字符。

详情

  • (?<!\S) - 左空白边界
  • (?!\d+(?!\S)) - 不允许紧靠右边的一个或多个数字以空格或字符串结尾结尾
  • \w+(?:-\w+)* - 一个或多个单词字符后跟 - 零次或多次重复以及一个或多个单词字符
  • (?!\S) - 右空白边界

这应该符合您的需要:

\b[\w-]*[a-zA-Z][\w-]*\b