正则表达式匹配#hashtag但不匹配#hashtag; (用分号)

Wex*_*Wex 8 regex hashtag

我有当前的正则表达式:

/(?<=[\s>]|^)#(\w*[A-Za-z_]+\w*)/g
Run Code Online (Sandbox Code Playgroud)

我正在测试字符串:

Here's a #hashtag and here is #not_a_tag; which should be different. Also testing: Mid#hash. #123 #!@£ and <p>#hash</p>
Run Code Online (Sandbox Code Playgroud)

出于我的目的,在该字符串中应该只检测到两个主题标签.我想知道如何更改表达式,使其与我的示例中以#结尾的主题标签匹配;#not_a_tag;

干杯.

tk7*_*k78 18

以下内容如何:

\B(\#[a-zA-Z]+\b)(?!;)
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

  • \ B - >不是单词边界
  • (#[a-zA-Z] +\b) - >捕获组以#开头,后跟任意数量的az或AZ,末尾带有字边界
  • (?!;) - >没有跟着;

  • 你的意思是'\ B`?`\ W`需要在`#`之前存在一个实际字符. (4认同)
  • 它与#007 或#50cents 不匹配,它们是真正的主题标签。 (2认同)

nhC*_*der 11

这是最佳实践。

(#+[a-zA-Z0-9(_)]{1,})
Run Code Online (Sandbox Code Playgroud)

  • 最佳答案就在这里,谢谢。如果您的软件是国际化的,则唯一可能需要的修改是允许扩展。也许像 `(#+[a-zA-Z0-9A-Za-zÀ-ÖØ-öø-ʸ(_)]{1,})` (2认同)

ne4*_*stb 9

/(#(?:[^\\x00-\\x7F]|\\w)+)/g\n
Run Code Online (Sandbox Code Playgroud)\n\n

以 # 开头,然后至少一个 (+) ANCII 符号([^\\x00-\\x7F],范围不包括非 ANCII 符号)或单词符号 (\\w)。

\n\n

这应该涵盖包括 ANCII 符号的情况,如“#\xd1\x97\xd0\xb6\xd0\xb0\xd0\xba”。

\n