如何使用正则表达式获取第一个和最后一个单词

时间:2015-01-14 16:40:09

标签: javascript regex

我知道正则表达式,你可以得到每一个字和第一个字母:

/\b(\w)/g,

但是还有一种方法可以得到第一个字吗?(我尝试了很多谷歌搜索,但无法找到任何两个而不是第一个或最后一个字) 我认为应该可以同时使用1个正则表达式而不是2个不同的正则表达式。

我的字符串和想要结果的示例?

字符串:Hello Mister world

会回馈:[' H',' w']

3 个答案:

答案 0 :(得分:1)

^\w|\b\w(?=\S+$)

试试这个。看看演示。

https://regex101.com/r/fA6wE2/31

编辑:

^\s*(\w)|\b(\w)(?=\S+$)

使用此选项并抓取组或捕获开始时是否有空格。

答案 1 :(得分:0)

虽然它只处理相当具体的输入,但你应该可以使用类似的东西:



var test = [
  "Get the first and last word",
  "Hello world!",
  "foo bar",
  "this is a test, for matches",
  "test"
];

var rex = /^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/;

test.forEach(function(it) {
  document.getElementById("results").textContent += JSON.stringify(rex.exec(it)) + "\n";
});

<pre id="results"></pre>
&#13;
&#13;
&#13;

匹配2和4将为您提供第一个和最后一个单词的修剪版本。

细分,正则表达式/^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/

  1. 匹配第一个单词字符序列,可选地后跟空格(匹配1是完整序列,匹配2排除尾随空白字符)。
  2. 匹配某些内容,但为最终的单词匹配留出空间。
  3. 匹配另一个可选的空白字符,然后是一些单词字符,然后是其他任何东西(可能是标点符号)(匹配3是完整序列,匹配4排除前导空格和尾随标点符号)

答案 2 :(得分:0)

^(\w).*\b(\w).*?$

会为您提供您正在寻找的东西。 regex101