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

时间:2009-11-12 14:28:06

标签: javascript regex chatroom

我正在开发一个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];
}

3 个答案:

答案 0 :(得分: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 Hi There you so awesome!"):

  • 第1组:“pm”
  • 第2组:“PezCuckow”
  • 第3组:“你好,你真棒!”

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

  • 第1组:“”
  • 第2组:“”
  • 第3组:“你好,你真棒!”

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

/foo\/bar/

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

答案 1 :(得分:1)

如此:

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,最后是消息{ {1}}(基本上是行尾的所有内容)。

答案 2 :(得分:0)

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

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