javascript - 使用正则表达式/javascript 提取最后一个单词

标签 javascript regex

这是针对输入线相当短(故意)的用例。当输入已满时,它应该自动发送消息,但保留最后一个单词。

我正在寻找能够满足这些场景的正则表达式:

input: "testing"
output: [1] - "testing"; [2] - null

input: "testing testing"
output: [1] - "testing"; [2] - "testing"

input: "testing testing testing"
output: [1] - "testing testing"; [2] - "testing"

input: "testing testing testing "
output: [1] - "testing testing"; [2] - "testing "

到目前为止,我想出了这些变体:

/(.*)\s+(\w+)/ - closest solution, but doesn't match for one word without spaces
/(.*)(?:\s+(\w+))?/ - is not recognizing last word

我不确定如何满足所有场景。这可能吗?

最佳答案

您可以使用此String#match:

var input = 'testing1 testing2 testing3 ';
var m = input.match(/^(.+?)(?: +(\w+\ *))?$/);
// ["testing1 testing2 testing3 ", "testing1", "testing2 testing3 "]

并在结果数组中使用组 #2 和组 #3。 (使用m[1]m[2])

Online Regex Demo

关于javascript - 使用正则表达式/javascript 提取最后一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24778395/

相关文章:

javascript - 如何使用react js显示表格

javascript - Angularjs Kendo 主从网格应用主从的默认 ID 以添加新的详细记录

Javascript - 一个对象的属性在另一个属性中?

php - Google 通讯录数据 API 和 PHP

.net - 文本提要的正则表达式替换

regex - Vim:使用多种模式排序

javascript - 在网络上使用 GZIP 压缩十六进制字符串(Javascript)

python - {m,n} 吗?正则表达式实际上最大限度地减少了重复,还是最大限度地减少了匹配的字符数?

Python 查找重复项并保留注释字符串

ruby-on-rails - Ruby - 检查字符串是否仅包含特定字符并使模型无效