Javascript Regex将删除尾随的现金标签/哈希标签

Javascript Regex将删除尾随的现金标签/哈希标签,javascript,regex,Javascript,Regex,我想要一个Javascript正则表达式,它将从Tweet文本中删除尾随的hashtags或cashtags 示例1 输入:这是一个#测试 输出:这是一个 示例2 输入:这是一个#测试,但它要复杂得多$test$omg 输出:这是一个测试,但要多得多 示例3 输入:此示例甚至包括 一条新的#线和一个$wow 输出:此示例甚至包括 一条新的#线和一个 到目前为止,我已经得到了(^ |\s)((#[a-z\d-]+)|(\$[a-z\d-]+)-但是,这会在任何位置剥离所有现金标签或哈希标签,并

我想要一个Javascript正则表达式,它将从Tweet文本中删除尾随的hashtags或cashtags


示例1

输入:这是一个#测试

输出:这是一个

示例2

输入:这是一个#测试,但它要复杂得多$test$omg

输出:这是一个测试,但要多得多

示例3

输入:此示例甚至包括

一条新的#线和一个$wow

输出:此示例甚至包括 一条新的#线和一个


到目前为止,我已经得到了
(^ |\s)((#[a-z\d-]+)|(\$[a-z\d-]+)
-但是,这会在任何位置剥离所有现金标签或哈希标签,并错误地删除非尾随标签

如何改进此正则表达式以保留那些不在末尾的cashtag/hashtags?

以下内容:

/(^|\s)((#[a-z\d-]+)|(\$[a-z\d-]+))\s*$/
应该只在末尾匹配-查看末尾的
\s*$
,它在字符串末尾匹配,并接受标记后面的尾随空格。如果结尾没有空格,您可以删除
\s*
部分。

以下内容:

/(^|\s)((#[a-z\d-]+)|(\$[a-z\d-]+))\s*$/

应该只在末尾匹配-查看末尾的
\s*$
,它在字符串末尾匹配,并接受标记后面的尾随空格。如果结尾没有空格,您可以删除
\s*
部分。

您使用的
正则表达式不包含有关匹配尾随标记的信息

试试这个:

/(?:\s*[#$][a-z\d-]+)+$/i
它的意思:

/                # regex delimiter
(?:              # start of a non-capturing group
    \s*          # zero or more white spaces
    [#$]         # one of '#' or '$'
    [a-z\d-]+    # one or more of: letters, digits, dash
)                # end of the group
+                # previous expression (the group) one or more times
$                # the end of the string
/                # regex delimiter
i                # ignore case (to let [a-z] match both lowercase and uppercase)

每个组匹配一个标记及其前面的空格字符(如果有)。字符串末尾锚(
$
)确保表达式仅在组位于字符串末尾时匹配。

您使用的
正则表达式不包含有关匹配尾部标记的信息

试试这个:

/(?:\s*[#$][a-z\d-]+)+$/i
它的意思:

/                # regex delimiter
(?:              # start of a non-capturing group
    \s*          # zero or more white spaces
    [#$]         # one of '#' or '$'
    [a-z\d-]+    # one or more of: letters, digits, dash
)                # end of the group
+                # previous expression (the group) one or more times
$                # the end of the string
/                # regex delimiter
i                # ignore case (to let [a-z] match both lowercase and uppercase)

每个组匹配一个标记及其前面的空格字符(如果有)。字符串末尾锚(
$
)确保表达式仅在组位于字符串末尾时匹配。

您忘记在
regex
中放置“trailing”的概念。您忘记在
regex
中放置“trailing”的概念。太棒了。这很有效,但出于某种原因,它对以下示例不起作用:“出于某种原因,这不起作用#CFTC#比特币$btc$eth$ada”有什么想法吗?@p_mcp它不起作用,因为
a-z
使用
a-z
a-Za-z
<代码>#CFTC
使用大写字母,
regex
仅使用小写字母。您可以在第二个范围的
A-Z
之后添加
A-Z
,也可以使用.Awesome。这很有效,但出于某种原因,它对以下示例不起作用:“出于某种原因,这不起作用#CFTC#比特币$btc$eth$ada”有什么想法吗?@p_mcp它不起作用,因为
a-z
使用
a-z
a-Za-z
<代码>#CFTC
使用大写字母,
regex
仅使用小写字母。您可以在第二个范围内的
A-Z
之后添加
A-Z
,也可以使用.small有效,但这只匹配最后一个现金标签/hashtag,而不是多个尾随标签大多数有效,但这只匹配最后一个现金标签/hashtag,而不是多个尾随标签