2013-11-03 74 views
0

我想要一个正则表达式来匹配字符串中每个单词的第一个字母。无法匹配字符串中每个单词的第一个字母

我正在使用XRegExp Javascript库。

其实我试图复制一个正则表达式我有我的服务器端的C#代码(貌似工作正常):

new Regex(@"\b[\p{L}]|(?<=[-])[\p{L}]").[omitted code] 

先发小,我已经试过如下:

XRegExp.exec("foo bar", XRegExp("\\b\\p{L}", "g")) 

我期望["f","b"](使用'all matches'标志(g),但只得到:["f"]

我在做什么错?

+0

为什么不使用String.split()来代替令牌,然后迭代这些字符串并取value.getChar(0)。这不是更容易,更可维护吗? –

+0

这听起来更容易。无论如何,我只需要分割空白和连字符,所以string.Split()应该可以正常工作。谢谢!我仍然想知道为什么XRegExp没有按计划运行,但是._。 – matsho

回答

0

您没有收到fb,因为exec()在每次调用中都会连续发现匹配项。

它通常用于while循环来查找所有匹配项。

如果您使用本地库,那么我会建议您使用string.match()一次查找所有匹配项。

在您的情况检查文档exec(),然后寻找类似于string.match()的方法。

+0

谢谢! :)我错过了“每次通话”中的“连续”。我使用XRegExp的原因是我在使用速记字符类(\ d,\ w,\ b等)时需要对Unicode的支持。我相信本地库[只支持ASCII](http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode)。 – matsho

+0

@matsho您非常欢迎。 –

相关问题