基于Regex Until But Not Including,我试图将所有字符匹配到字边界。
例如 - 在以下字符串中匹配apple
:
apple<
我正在使用:
[^]
\b
+
repeater 像这样:
/a[^\b]+/
哪个应该查找“a”,然后为任何不是单词边界的字符抓取一个或多个匹配项。所以我希望它会在<
之前停止,而var input = [ "apple<", "apple/" ];
var myRegex = /a[^\b]+/;
for (var i = 0; i < input.length; i++) {
console.log(myRegex.exec(input[i]));
}
位于单词
/a[\B]+/
我尝试了其他正则表达式字符串:
我可以使用否定的单词边界或带有常规单词边界的否定集合:
/a[^\b]+/
/a[^|"<>\-\\\/;:,.]+/
我可以指定几个可能的单词结束字符,并在否定集中使用它们:
/a[\w]+/
我也可以寻找一个正面的集合,并限制它返回常规字母:
/a[a-zA-Z]+/
但是如果可能的话,我想知道如何为字边界做这件事。
这是MDN's listing of word boundary和characters that it constitutes
答案 0 :(得分:6)
字边界(\b
)不是字符,而是一系列字母和任何非字母字符之间的空字符串。此外,由于JavaScript中仍然缺少Unicode支持,“字母”仅表示ASCII字母。
因此,你
\b
\b
(空字符串乘以10仍然是一个空字符串)\b
(它不是字符集,所以它没有补充)\b
(在方括号中),因为它不是字符或字符集由于\b
实际上没有为匹配添加任何字符,因此您可以安全地将其附加到正则表达式中:
/.+?\b/
将匹配所有字符直到第一个单词边界。它实际上是:
的超集/\w+/
这可能是你想要的,因为你只对单词感兴趣,而不是介于两者之间的东西。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果问题的这一重写是准确的:匹配所有以&#39; a&#39; 开头的单词,那么您可能已经开始使用现有的SO答案进行搜索{{3} }。向下提取你可以使用单词\w
的字符类,并通过包含前面的单词边界\b
匹配使其更加防弹,以防止匹配包含&#39; a&#的部分单词39;例如&#39;行李&#39;:/\ba\w+/gi
var input = [ "apple<", "apple/", "baggage;" ];
var myRegexWord = /\ba\w+/i;
var myRegexPartial = /a\w+/;
for (var i = 0; i < input.length; i++) {
console.log(myRegexWord.exec(input[i]));
console.log(myRegexPartial.exec(input[i]));
}
&#13;