javascript -/PM 用于在聊天室发送消息的正则表达式语法

标签 javascript regex chatroom

我正在开发一个 AJAX/PHP 聊天室,目前一直在使用正则表达式来检测用户是否发送了私信,然后找出用户是谁以及消息是什么。

如果用户输入类似的内容

/pm PezCuckow Hi There you so awesome!

我想首先测试我的字符串是否与该模式匹配,然后获取“PezCuckow”和“嗨,你太棒了!”作为要发布到 PHP 的字符串。

我对正则表达式做了一些研究,但真的不知道从哪里开始! 你能帮忙吗?

==感谢大家的帮助,问题现已解决!==

var reg = /^\/pm\s+(\w+)\s+(.*)$/i;
var to = "";

if(message.match(reg)) {
    m = message.match(reg);
    to = m[1];
    message = m[2];
}

最佳答案

此正则表达式解析消息:

^(?:\s*/(\w+)\s*(\w*)\s*)?((?:.|[\r\n])*)$

说明:

^              # start-of-string
(?:            # start of non-capturing group
  \s*/         #   a "/", preceding whitespace allowed
  (\w+)        #   match group 1: any word character, at least once (e.g. option)
  \s+          #   delimiting white space
  (\w*)        #   match group 2: any word character (e.g. target user)
  \s+          #   delimiting white space
)?             # make the whole thing optional
(              # match group 3:
  (?:          #   start of non-capturing group, either
    .          #     any character (does not include newlines)
    |          #     or
    [\r\n]     #     newline charaters
  )*           #   repeat as often as possible
)              # end match group 3

就您而言(“/pm PezCuckow 嗨,你太棒了!”):

  • 第 1 组:“下午”
  • 第 2 组:“PezCuckow”
  • 第 3 组:“嗨,你太棒了!”

在更一般的情况下(“嗨,你太棒了!”)

  • 第 1 组:“”
  • 第 2 组:“”
  • 第 3 组:“嗨,你太棒了!”

请注意,JavaScript 正则表达式中的正斜杠需要转义:

/foo\/bar/

但一般不在正则表达式模式中。

关于javascript -/PM 用于在聊天室发送消息的正则表达式语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722547/

相关文章:

ios - 当新消息发送到聊天室时得到通知(当聊天室未加入时)

angularjs - socket.io 手动将用户添加到房间(node.js)

node.js - socket.io 随机聊天室一对一

javascript - Meteor JS - 多模板 Javascript

javascript - 正则表达式 - 无限错误是什么意思?

python - 用于删除括号中数据的正则表达式

sql - LIKE 和 ~ 在 Postgres 中的区别

javascript - 检查字符长度并在太长时将其缩短的函数

javascript - 正则表达式计算字符串中的单词总数

javascript - 根据条件查找所有索引