Javascript 如何将正则表达式应用于包含不同单词的同一字符串?

Javascript 如何将正则表达式应用于包含不同单词的同一字符串?,javascript,regex,Javascript,Regex,我有一个下面的正则表达式,它基本上用连字符获取字符串: /class=“(?=\S*[-])([a-zA-Z-]+)/gim 输入字符串为: <div class="hello-world h-123"></div> <div class="this-is-cool"></div> 然而,我的问题是,在输入字符串中,它只匹配hello world,但我想匹配h-123,同时使用相同的正则表达式,但单独(组)进行匹配。基本上,我试图构建一个正则

我有一个下面的正则表达式,它基本上用连字符获取字符串:

/class=“(?=\S*[-])([a-zA-Z-]+)/gim

输入字符串为:

<div class="hello-world h-123"></div>
<div class="this-is-cool"></div>


然而,我的问题是,在输入字符串中,它只匹配
hello world
,但我想匹配
h-123
,同时使用相同的正则表达式,但单独(组)进行匹配。基本上,我试图构建一个正则表达式,它基本上获取包含破折号的所有字符串。

您的正则表达式指定从
类=”开始
,仅包含字母。将其更改为字母和数字(我使用了包含字母、数字和下划线的
\w
),它们之间至少有一个破折号:

const regexp=/\w+(\w+)/gim
常量str=`
`
const result=str.match(regexp)
console.log(结果)
([\w\s]*[-][\w]*)*


这将查找以字母数字字符或空格开头、有连字符且后跟字母数字字符的任何字符串。它会多次这样做,以链接在第一个和最近一个之间可能有空格的连字符短语。

为什么要使用前瞻?必须使用正则表达式吗?有更好的方法可以在javascript中获取类名。您是否希望最终结果有三个匹配(“hello world”、“h-123”、“this is cool”)或两个匹配(“hello world h-123”、“this is cool”)?这是匹配的
\u-
正确,OP从未指定字符串中的所有内容。他们只是说字符串中至少有一个连字符。