如何使用JavaScript正则表达式提取字符串中的最后一个单词?

问题描述 投票:6回答:4

我需要的是最后一场比赛。在下面的单词test没有$标志或任何其他特殊字符:

测试字符串:

$this$ $is$ $a$ $test$ 

正则表达式:

\b(\w+)\b
javascript regex
4个回答
11
投票

$代表字符串的结尾,所以......

\b(\w+)$

但是,您的测试字符串似乎有美元符号分隔符,因此如果它们始终存在,那么您可以使用它而不是\b

\$(\w+)\$$

var s = "$this$ $is$ $a$ $test$";

document.body.textContent = /\$(\w+)\$$/.exec(s)[1];

如果可能有尾随空格,则在结束前添加\s*

\$(\w+)\$\s*$

最后,如果最后可能有其他非单词的东西,那么使用\W*代替。

\b(\w+)\W*$

0
投票

var input = "$this$ $is$ $a$ $test$";

如果你使用var result = input.match("\b(\w+)\b"),接下来将返回所有匹配的数组,你可以通过在结果上使用pop()或通过执行:result[result.length]来获得它


0
投票

你的正则表达式会找到一个单词,由于正则表达式从左到右操作,它会找到第一个单词。

\w+匹配尽可能多的连续字母数字字符,但它必须匹配至少1。 \b匹配非字母数字字符旁边的字母数字字符。在你的情况下,这匹配'$'字符。

你需要的是将你的正则表达式锚定到输入的末尾,由$字符在正则表达式中表示。

要支持在行尾,空格或句点之外可能不仅仅包含'$'字符的输入,您可以使用匹配尽可能多的非字母数字字符的\W+

\$(\w+)\W+$

0
投票

避免使用正则表达式 - 使用qazxsw poi和qazxsw poi结果。使用qazxsw poi删除特殊字符:

.split

.pop


推荐问答