如何使用JavaScript正则表达式提取字符串中的最后一个单词?
我需要的是最后一场比赛。在单词如何使用JavaScript正则表达式提取字符串中的最后一个单词?,javascript,regex,Javascript,Regex,我需要的是最后一场比赛。在单词test下面的情况下,不带$符号或任何其他特殊字符: 测试字符串: $this$ $is$ $a$ $test$ 正则表达式: \b(\w+)\b $表示字符串的结尾,因此 \b(\w+)$ 但是,您的测试字符串似乎有美元符号分隔符,因此如果这些分隔符始终存在,那么您可以使用它而不是\b \$(\w+)\$$ var s=“$this$$is$$a$$test$”; document.body.textContent=/\$(\w+)\$$/.exec[
test
下面的情况下,不带$
符号或任何其他特殊字符:
测试字符串:
$this$ $is$ $a$ $test$
正则表达式:
\b(\w+)\b
$
表示字符串的结尾,因此
\b(\w+)$
但是,您的测试字符串似乎有美元符号分隔符,因此如果这些分隔符始终存在,那么您可以使用它而不是\b
\$(\w+)\$$
var s=“$this$$is$$a$$test$”;
document.body.textContent=/\$(\w+)\$$/.exec[1]
var input=“$this$$is$$a$$test$”代码>
如果您使用var result=input.match(“\b(\w+)\b”)
接下来将返回所有匹配项的数组,您可以通过对结果使用pop()
或执行以下操作来获得该数组:result[result.length]
您的正则表达式将找到一个单词,并且由于正则表达式从左到右操作,它将找到第一个单词
\w+
匹配尽可能多的连续字母数字字符,但必须至少匹配1个。
A\b
匹配非字母数字字符旁边的字母数字字符。在您的情况下,这与“$”
字符匹配
您需要的是将正则表达式锚定到输入的末尾,该输入在正则表达式中由$
字符表示
要支持在行尾、空格或句点处可能不止有一个'$'
字符的输入,您可以使用\W+
,它可以匹配尽可能多的非字母数字字符:
\$(\w+)\W+$
避免正则表达式-使用.split
和.pop
结果。使用.replace
删除特殊字符:
var match = str.split(' ').pop().replace(/[^\w\s]/gi, '');
或在字符串上使用.split
,然后用.pop
抓住最后一个元素。更简单。使用input.match(/\b\w+\b/g).pop()代码>@Andy我在添加我的答案后注意到了你的评论,我同意。尽可能避免使用正则表达式。如果你把这个放在一个答案中,你至少会从我这里得到+1:)@Andy和@Jonathan Mee,如何告诉split
除了空格外还使用特殊字符?@pgschr我会解释一下,但最简单的方法是在空格上拆分,把你的最后一个元素切掉,去掉第一个和最后一个字符。为什么我要写一个regexp,返回所有匹配项,然后选择最后一个,而不是只写一个regexp,选择最后一个开始?我甚至不知道这是可能的,我想唯一有效的答案是你的最后一个regex。前三个不符合确认标准。@GarisMSuero:我不知道实际的字符串可能是什么。如果测试字符串代表实际的字符串格式,那么除了第一个之外,其他所有的都应该工作。如果他使用$
作为一种奇怪的方式来表示单词边界,那么第一种方法就行了。这个问题并不完全清楚,所以我给了每个选项。是的,我同意,但他也说:“如果没有$sign或任何其他特殊字符,这怎么可能实现?”@GarisMSuero:是的,你是对的。最后一个是它。这个解决方案除了空间之外不考虑特殊字符。