Javascript 用于检测字符在同一字符串中是否只出现一次的正则表达式

Javascript 用于检测字符在同一字符串中是否只出现一次的正则表达式,javascript,regex,google-apps-script,slack,Javascript,Regex,Google Apps Script,Slack,我正在创建一个slack斜杠命令,我想沿着/command send@jay some flowers的行发送正文文本,但我想发送一个错误,因为该命令没有@handles或包含多个@handles 我现在编写代码的方式是使用regex来验证句柄是否存在/.*\.*/,但我正在疯狂地尝试处理边缘情况,并在检测一个且只有一个@符号时获得一些验证 如果有帮助的话,我将在Gscript web服务中的javascript中验证它 有什么想法吗? thx不使用正则表达式,只需使用@拆分字符串并检查生成的数

我正在创建一个slack斜杠命令,我想沿着
/command send@jay some flowers
的行发送正文文本,但我想发送一个错误,因为该命令没有@handles或包含多个@handles

我现在编写代码的方式是使用regex来验证句柄是否存在
/.*\.*/
,但我正在疯狂地尝试处理边缘情况,并在检测一个且只有一个@符号时获得一些验证

如果有帮助的话,我将在Gscript web服务中的javascript中验证它

有什么想法吗?
thx

不使用正则表达式,只需使用
@
拆分字符串并检查生成的数组是否仅包含2个字符串,即可轻松实现这一点:

const isUnique=(字符,字符串)=>{
返回string.split(char).length==2
}
log(isUnique('@','/command send@jay some flowers'))

console.log(isUnique('@','/command@send@jay some flowers'))
这里有两个表达式用于否定和肯定检查:

  • 匹配没有@句柄或至少有两个的字符串:
    /^(?。*\w)|@\w.*\w/
    -请参阅
  • 匹配只有一个@handle:
    /^(?。*@\w.*@\w.*@\w/
    的字符串-请参阅

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

您可以简单地检查
如果(yourString.match(/\@/g).length!==1){//OK}或者{//notok}
是的,有两种方法可以很容易地在代码中完成它,但是我构建原型是为了寻找一个完整的正则表达式匹配,然后我被困在兔子洞里,试图在不添加代码的情况下更新它。我几乎肯定进入沉没成本领域,但我刚刚知道在这个阶段。。。感谢您的回答。如果可能的话,请对结果有帮助的答案进行投票。如果字符串不包含任何“@”,则返回true event;return语句应该是
returnstring.split(char).length==2@secan ooup谢谢提醒我更新我的答案:)