Javascript 具有动态长度的正则表达式

Javascript 具有动态长度的正则表达式,javascript,regex,Javascript,Regex,我有两个或三个单词的字符串: 'apple grape lemon' 'apple grape' 我需要从所有单词中获取第一个字符。 我的正则表达式: /^(\w).*?\ (\w).*?\ ?(\w?).*?$/ 对于所有字符串,此正则表达式仅获取2个单词的第一个字符 如何修复?正则表达式是一个函数,因此不能在它们中有这种重复。您想要的是将字符串切割成单独的toke(可以通过正则表达式匹配分隔符),然后在每个标记上应用正则表达式。要从每个单词中获取第一个字符,使用子字符串操作而不是正则表达

我有两个或三个单词的字符串:

'apple grape lemon'
'apple grape'
我需要从所有单词中获取第一个字符。 我的正则表达式:

/^(\w).*?\ (\w).*?\ ?(\w?).*?$/
对于所有字符串,此正则表达式仅获取2个单词的第一个字符

如何修复?

正则表达式是一个函数,因此不能在它们中有这种重复。您想要的是将字符串切割成单独的toke(可以通过正则表达式匹配分隔符),然后在每个标记上应用正则表达式。要从每个单词中获取第一个字符,使用子字符串操作而不是正则表达式会更快

正则表达式的问题是,第二个单词后面的
*?
会吃掉下面的所有内容,因为后面的所有内容都是可选的。这是可以解决的,但我个人认为这会使事情变得比需要的更复杂。

正则表达式是一个复杂的函数,因此不能在它们中有这种重复。您想要的是将字符串切割成单独的toke(可以通过正则表达式匹配分隔符),然后在每个标记上应用正则表达式。要从每个单词中获取第一个字符,使用子字符串操作而不是正则表达式会更快


正则表达式的问题是,第二个单词后面的
*?
会吃掉下面的所有内容,因为后面的所有内容都是可选的。这是可以解决的,但我个人认为这会使事情变得比要求的更复杂。

你不能用一个正则表达式(除非你使用的是.NET)。但是您可以使用一个正则表达式来匹配单词的第一个字符,然后获取所有匹配项,并将它们连接在一起:

var firstLetters = '';
var match = str.match(/\b\w/g)
if (match)
    firstLetters = match.join('');
当然,如果您只想自己获取字母,则无需使用
连接
,因为
匹配
将只是一个包含所有这些字母的数组


您不应该这样做,因为
\w
不仅是字母,而且是数字和下划线。

您不能用一个正则表达式来实现这一点(除非您使用的是.NET)。但是您可以使用一个正则表达式来匹配单词的第一个字符,然后获取所有匹配项,并将它们连接在一起:

var firstLetters = '';
var match = str.match(/\b\w/g)
if (match)
    firstLetters = match.join('');
当然,如果您只想自己获取字母,则无需使用
连接
,因为
匹配
将只是一个包含所有这些字母的数组


您不应该这样做,
\w
不仅仅是字母,还有数字和下划线。

如果您使用javascript,您不需要为一个简单的问题进行正则表达式

要获得第一个字母,只需执行以下操作:

var aString = 'apple bee plant';
var anArray = aString.split(' ');

for(var aWord in anArray) {
    var firstLetter = aWord.charAt(0);
}

如果你使用javascript,你不需要在一个简单的问题上使用正则表达式

要获得第一个字母,只需执行以下操作:

var aString = 'apple bee plant';
var anArray = aString.split(' ');

for(var aWord in anArray) {
    var firstLetter = aWord.charAt(0);
}

最简单的方法是:

firstLetters = (m = str.match(/\b\w/g))? m.join('') : '';

最简单的方法是:

firstLetters = (m = str.match(/\b\w/g))? m.join('') : '';

在regexp中,“单词”不仅仅指字母。在JavaScript中,
\w
等于
[A-Za-z0-9\]
。因此,如果您只想在结果中使用字母,可以在regexp中使用
[A-Za-z]

“单词”不仅仅指字母。在JavaScript中,
\w
等于
[A-Za-z0-9\]
。因此,如果您只希望结果中包含字母,您可以使用
[A-Za-z]

您使用的正则表达式是哪种语言或工具?解决这一问题的办法将取决于这一点。有很多消息来源。可以帮助您了解语言使用情况吗?您使用的是哪种语言或工具?解决这一问题的办法将取决于这一点。有很多消息来源。可能有助于了解此3个元素的正则表达式数组的语言用法thoughresult。此3个元素的正则表达式数组的2个字符和空字符
“a”、“g”和“
结果。2个字符和空字符
“a”、“g”、“g”