首页 > 解决方案 > 正则表达式检测一个字符是否在同一个字符串中只出现一次

问题描述

我正在创建一个斜杠命令,我想发送正文文本,/command send @jay some flowers但我想发送一个错误是命令不包含@handles 或多个。

我现在编写代码的方式是使用正则表达式来验证句柄是否存在,/.*\@.*/但我会发疯地试图处理边缘情况并围绕检测一个且只有 1 个 @ 符号进行一些验证。

如果有任何帮助,我正在 Gscript Web 服务中的 javascript 中验证它

有什么想法吗?谢谢

标签: javascriptregexgoogle-apps-scriptslack

解决方案


以下是否定和肯定检查的两个表达式:

  • 匹配没有@handles 或至少有两个的字符串:/^(?!.*@\w)|@\w.*@\w/- 见证明
  • 匹配一个只有一个 @handle: 的字符串/^(?!.*@\w.*@\w).*@\w/- 参见proof

我认为您的 @handle 必须是@ + 一个单词字符,而不是单个@.


推荐阅读