JavaScript 匹配返回匹配项加上空字符串

标签 javascript regex

似乎是一个有点愚蠢的问题,但是查看所有 MDN 文档我无法说出为什么会发生这种情况。

我的匹配不仅返回句子中的单词,还返回空字符串,即出现的每个匹配项之一。

var input = "This is a something";
input.match(/[a-z0-9]*/gi); # ["This", "", "is", "", "a", "", "something", ""]

即使是一个单词也会发生这种情况。

var input = "This";
input.match(/[a-z0-9]*/gi); # ["This", ""]

我也尝试过添加单词边界(\b),但它根本没有帮助。有人能告诉我这是怎么回事吗?我只想匹配句子中的所有单词。

预先感谢您的帮助。

最佳答案

您可以使用 +,但对于您的用例(匹配句子中的所有单词),您最好使用 split。

var input = "This is a something";
input.split(' '); // ["This", "is", "a", "something"]

在这种情况下,看起来 split 也是您正在寻找的:

input = "words with a-hyphen";
input.split(' '); // ["words", "with", "a-hyphen"]
input.match(/[a-z0-9]+/gi); //["words", "with", "a", "hyphen"]

如果需要,您可以稍后使用匹配项

关于JavaScript 匹配返回匹配项加上空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232676/

相关文章:

javascript - 如果在单击中将元素重新插入到 DOM 中,则不会触发 onclick

javascript - 在模态中加载模型仅有效一次

regex - 不使用正则表达式用空格替换减号(-)的问题

regex - 分层正则表达式

Bash 中的 Java 格式正则表达式

java - 在 Java 正则表达式中使用空格

javascript - 根据页面上的 SWF(Flash)元素创建图像? PHP/Jquery/Javascript/HTML/FLASH

javascript - 更新 mongodb 嵌入式数组中的所有元素

JavaScript/分页 Div

python - 根据需要在字符串之间添加文本