如何获取字符串中的第一个单词

时间:2015-11-25 19:10:05

标签: javascript regex

网络上的答案与其他编程语言有关。我做了很多搜索,但似乎都没有。我正在寻找每个头衔。

var str = ["bob, b", "the, d", "builder, e", "can", "he", "fix", "it" ]
str.match(/^(\w+)/) // Uncaught TypeError: str.match is not a function

我试着看this但是......我还在学习,而且我没有正确使用它。

如何仅返回bob而非bob, b

6 个答案:

答案 0 :(得分:3)

JS Fiddle

var str = ["bob, b", "the, d", "builder, e", "can", "he", "fix", "it" ];
for(var i=0; i < str.length; ++i){
    console.log(str[i].match('[a-zA-Z]+'));
}

答案 1 :(得分:0)

您在字符串上运行match(),但在字符串数组上运行strstr[0]是一个数组(因此不知道其中包含了什么),但String是该数组的第一个元素,是match()并且具有str[0]方法。在strArray上运行正则表达式,你应该回到“bob”。

最好重命名数组变量以反映这一点(例如{{1}})。

答案 2 :(得分:0)

关于你的正则表达式:

首先,您必须使用 ^ 来查看字符串的开头。

然后你想匹配字母(或数字?),只要没有任何其他字符:

[a-zA-Z0-9]

你的正则表达式应该是

^[a-zA-Z0-9]+

正如@ Compynerd255所说:你需要在你的字符串而不是你的数组上应用你的match()函数。

答案 3 :(得分:0)

试试这个......

function getFirstWord(str) {
  var matched = str.match(/^\w+/);
  if(matched) {
    return matched[0];
  }

  console.error("No Word found");
  return -1;
};

var str = ["bob, b", "the, d", "builder, e", "can", "he", "fix", "it"];

for(var i = 0, strLen = str.length; i < strLen; i += 1) {
  var item = str[i];
  var firstWord = getFirstWord(item);

  console.log(firstWord);
}

答案 4 :(得分:-1)

首先,您需要从array获取第0个元素,然后使用昏迷split,以便在获得array后返回array你可以从中提取第一个元素。

在坚果壳中,以下作品

var str = ["bob, b", "the, d", "builder, e", "can", "he", "fix", "it" ]

console.log(str[0].split(',')[0]);

答案 5 :(得分:-1)

您无法在阵列上应用正则表达式。迭代每个元素:

/(\w+)/.exec(str[i])[1]

JSFiddle