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

Posted

技术标签:

【中文标题】/PM 用于在聊天室中发送消息的正则表达式语法【英文标题】:/PM regex syntax for sending message in chat-room 【发布时间】:2009-11-12 14:28:06 【问题描述】:

我正在开发 AJAX/php 聊天室,目前卡在正则表达式上,以检测用户是否发送了 PM,然后确定它是谁以及消息是什么。

如果用户键入类似的内容

/pm PezCuckow 你好,你太棒了!

我想先测试我的字符串是否与该模式匹配,然后得到“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];

【问题讨论】:

【参考方案1】:

这个正则表达式解析一条消息:

^(?:\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 Hi There you so awesome!"):

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

在更一般的情况下 ("Hi There you so awesome!")

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

请注意,在 javascript 正则表达式中需要对正斜杠进行转义:

/foo\/bar/

但不是一般的正则表达式模式。

【讨论】:

【参考方案2】:

这个怎么样:

var reg = /^\/pm\s+(\w+)\s+(.*)$/i,
    m = '/pm PezCuckow Hi There you so awesome!'.match(reg);

m[0]; // "PezCuckow"
m[1]; // "Hi There you so awesome!"

匹配"/pm",后跟空格" "(可以接受额外的空格),然后是用户名\w+,然后是空格" " agin,最后是消息.*(基本上是行尾)。

【讨论】:

【参考方案3】:

假设在名称字段中只有单词字符(没有空格等)是有效的,这会做你想要的:

var re = /(\/\w+) (\w+) (.+)/;

【讨论】:

以上是关于/PM 用于在聊天室中发送消息的正则表达式语法的主要内容,如果未能解决你的问题,请参考以下文章

bash 完成不适用于 MSYS bash。正则表达式语法错误

前端学PHP之正则表达式基础语法

前端学PHP之正则表达式基础语法

正则表达式快速处理微信聊天记录

Jmeter-正则表达式语法

用于转义 MySQL 正则表达式语法的 PHP 函数